博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode - 2. Add Two Numbers
阅读量:6239 次
发布时间:2019-06-22

本文共 2658 字,大约阅读时间需要 8 分钟。

2. Add Two Numbers 

 ----------------------------------------------------------------------------

Mean: 

给你两个数字链表,让你将两个链表相加,结果保存在一个新链表中.

analyse:

最基本的链表操作.

做链表题时只需注意:先分配(new ListNode(val)),再h=h->next.也就是不要将指针指向空指针.

Time complexity: O(N)

 

view code

/**
* -----------------------------------------------------------------
* Copyright (c) 2016 crazyacking.All rights reserved.
* -----------------------------------------------------------------
*       Author: crazyacking
*       Date  : 2016-01-29-16.16
*/
#include <queue>
#include <cstdio>
#include <set>
#include <string>
#include <stack>
#include <cmath>
#include <climits>
#include <map>
#include <cstdlib>
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
using
namespace
std;
typedef
long
long(
LL);
typedef
unsigned
long
long(
ULL);
const
double
eps(
1e-8);
// Definition for singly-linked list.
struct
ListNode
{
   
int
val;
   
ListNode
*
next;
   
ListNode(
int
x)
:
val(
x
),
next(
NULL)
{}
};
class
Solution
{
public
:
   
ListNode
*
addTwoNumbers(
ListNode
*
l1
,
ListNode
*
l2)
   
{
       
int
jinwei
=
0;
       
ListNode
*
h1
=
l1;
       
ListNode
*
h2
=
l2;
       
ListNode
*
ans
,
*
ret;
       
bool
isFirst
=
true;
       
while(
h1
&&
h2)
       
{
           
int
val
=
h1
->
val
+
h2
->
val
+
jinwei;
           
int
now
=
val
%
10;
           
jinwei
=
val
/
10;
           
if(
isFirst)
           
{
               
ans
=
new
ListNode(
now);
               
ret
=
ans;
               
isFirst
=
false;
           
}
           
else
           
{
               
ans
->
next
=
new
ListNode(
now);
               
ans
=
ans
->
next;
           
}
           
h1
=
h1
->
next;
           
h2
=
h2
->
next;
       
}
       
while(
h1)
       
{
           
int
val
=
h1
->
val
+
jinwei;
           
int
now
=
val
%
10;
           
jinwei
=
val
/
10;
           
if(
isFirst)
           
{
               
ans
=
new
ListNode(
now);
               
ret
=
ans;
               
isFirst
=
false;
           
}
           
else
           
{
               
ans
->
next
=
new
ListNode(
now);
               
ans
=
ans
->
next;
           
}
           
h1
=
h1
->
next;
       
}
       
while(
h2)
       
{
           
int
val
=
h2
->
val
+
jinwei;
           
int
now
=
val
%
10;
           
jinwei
=
val
/
10;
           
if(
isFirst)
           
{
               
ans
=
new
ListNode(
now);
               
ret
=
ans;
               
isFirst
=
false;
           
}
           
else
           
{
               
ans
->
next
=
new
ListNode(
now);
               
ans
=
ans
->
next;
           
}
           
h2
=
h2
->
next;
       
}
       
while(
jinwei)
       
{
           
ans
->
next
=
new
ListNode(
jinwei
%
10);
           
jinwei
/=
10;
           
ans
=
ans
->
next;
       
}
       
return
ret;
   
}
};
int
main()
{
   
int
n1
,
n2;
   
while(
cin
>>
n1
>>
n2)
   
{
       
ListNode
*
h1
,
*
head1;
       
ListNode
*
h2
,
*
head2;
       
int
tmp;
       
for(
int
i
=
0;
i
<
n1;
++
i)
       
{
           
cin
>>
tmp;
           
if(
!
i)
           
{
               
h1
=
new
ListNode(
tmp);
               
head1
=
h1;
           
}
           
else
           
{
               
h1
->
next
=
new
ListNode(
tmp);
               
h1
=
h1
->
next;
           
}
       
}
       
for(
int
i
=
0;
i
<
n2;
++
i)
       
{
           
cin
>>
tmp;
           
if(
!
i)
           
{
               
h2
=
new
ListNode(
tmp);
               
head2
=
h2;
           
}
           
else
           
{
               
h2
->
next
=
new
ListNode(
tmp);
               
h2
=
h2
->
next;
           
}
       
}
       
Solution
solution;
       
ListNode
*
ans
=
solution
.
addTwoNumbers(
head1
,
head2);
       
puts(
"----------------------");
       
while(
ans)
       
{
           
cout
<<
ans
->
val;
           
ans
=
ans
->
next;
       
}
       
cout
<<
endl;
   
}
   
return
0;
}

 

转载于:https://www.cnblogs.com/crazyacking/p/5021959.html

你可能感兴趣的文章
review what i studied `date` - 2017-3-31
查看>>
Eclipse -Maven环境集成
查看>>
设计模式之UML关系符号解释
查看>>
使用Windows 7 USB/DVD Download Tool制作WIN7系统安装盘
查看>>
全球五大顶级域名一周统计 .BIZ环比增长123.3%
查看>>
中国五大顶级域名7月第二周增4.1万 美国减3.1万
查看>>
我的友情链接
查看>>
分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(3月12日-3月18日)
查看>>
再次升级!阿里云Kubernetes日志解决方案
查看>>
聊聊Dubbo - Dubbo可扩展机制实战
查看>>
mysql如何分表mysql分表的3种方法比较优点缺点
查看>>
linux平台上的扫描技术Nmap
查看>>
ACMjlb入门题 1034
查看>>
ansible-playbook批量部署安装tomcat
查看>>
ansible安装配置(一)
查看>>
好程序员web前端分享js剪切板Clipboard.js 使用
查看>>
centos6.5下使用lnmp架构安装nextcloud云盘
查看>>
ubuntu 删除旧内核
查看>>
TT/TC安装和简单使用
查看>>
Android利用drawable文件夹自定义控件背景、样式
查看>>