http://oj.leetcode.com/problems/add-two-numbers/

将用链表表示的两个数相加,(2 -> 4 -> 3) + (5 -> 6 -> 4) 就是342 + 465.刚开始把题目给理解错了,做复杂了。

主要是对指针的理解。

ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
if(l1==NULL)
return l2;
if(l2==NULL)
return l1;
int sum;
int carry = ; ListNode *ans = l1;
ListNode *ans3 = ans;
//最后结果存到l1 ans
while(l1&&l2)
{
sum = l1->val + l2->val + carry;
carry = sum/;
if(carry)
l1->val = sum - ;
else
l1->val = sum;
l1 = l1->next;
l2 = l2->next;
}
if(l1==NULL &&l2==NULL)
{
if(carry == )
return ans; //找到最后一个节点
while(ans3->next)
ans3 = ans3->next;
ListNode *temp = new ListNode();
ans3->next = temp;
return ans;
}
//将两种情况化成一种
if(l1 == NULL)
{
while(ans3->next)
ans3 = ans3->next;
ans3->next = l2;
l1 = l2;
l2 = NULL;
} //要看最高位进位的情况
if(carry == )
return ans; while(carry == && l1)
{ l1->val += carry;
if(l1->val > )
{
l1->val = l1->val %;
carry = ;
l1 = l1->next;
}
else
return ans; }
if(carry == )
{
while(ans3->next)
ans3 = ans3->next;
ListNode *temp = new ListNode();
ans3->next = temp;
} return ans;
}
int main()
{
ListNode *l1 = new ListNode();
ListNode *n1 = new ListNode();
ListNode *n5 = new ListNode(); ListNode *l2 = new ListNode();
ListNode *n4 = new ListNode();
ListNode *n6 = new ListNode();
//ListNode *n8 = new ListNode(8);
l1->next = n1;
n1->next = n5;
l2->next = n4;
n4->next = n6;
//n6->next = n8;
Solution myS;
ListNode *temp = myS.addTwoNumbers(l2,l1);
return ;
}

囧,读复杂了,还做了个链表的翻转。

ListNode *reverse(ListNode * l2)
{
ListNode *n1,*n2,*before;
n1 = l2;
n2 = n1->next;
before = NULL;
while(n2)
{
n1->next = before;
before = n1;
n1 = n2;
n2 = n2->next;
}
n1->next = before;
return n1;
}

三个指针做链表的反转。

最新文章

  1. Spring JDBC实现查询
  2. [转]Android SHA1与Package获取方式
  3. centos网卡错误Device eth0 does not seem to be present
  4. latex输入希腊字母
  5. Laravel 清空配置缓存
  6. JavaScript 按回车键提交搜索表单 easyui ajax方式
  7. C#中易混淆的知识点
  8. jdbc_servlet基础增删改分页2(userinfo表的)
  9. 开源OSS.Social微信项目解析
  10. 机器学习技法:09 Decision Tree
  11. Python入门-用户登录程序升级版
  12. ASP.NET MVC - 处理Html数据
  13. Best Free Hacking E-Books 2017 In PDF Format
  14. ionic框架使用步骤
  15. Ajax提交用FormData()上传文件
  16. spring源码分析系列 (8) FactoryBean工厂类机制
  17. Linux CentOS下Python+robot framework环境搭建
  18. express运行原理
  19. python---基础知识回顾(六)网络编程2(处理粘包)
  20. 关于Cocos2d-x中的scheduleUpdate和update方法的使用

热门文章

  1. Python基础学习总结__Day2
  2. Educational Codeforces Round 53 (Rated for Div. 2) C Vasya and Robot 二分
  3. UVA1589——xiangqi
  4. Linux学习-YUM 在线升级机制
  5. WPF触控程序开发(三)——类似IPhone相册的反弹效果
  6. THUSC2019游记
  7. 光学字符识别OCR-4
  8. luogu3388 【模板】割点(割顶)
  9. [译]pycache是什么?
  10. XDEBUG 远程调试