LeetCode:0002(两数之和)

题目描述:给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。
你可以假设除了数字 0 之外,这两个数字都不会以零开头。
示例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807

算法思路

思路


算法
  就像你在纸上计算两个数字的和那样,我们首先从最低有效位也就是列表 的表头开始相加。由于每位数字都应当处于 的范围内,我们计算两个数字的和时可能会出现“溢出”。例如,5 + 7 = 125+7=12。在这种情况下,我们会将当前位的数值设置为 2,并将进位 带入下一次迭代。进位carry必定是0或1,这是因为两个数字相加(考虑到进位)可能出现的最大和为 9 + 9 + 1 = 19。

伪代码如下:

  • 将当前结点初始化为返回列表的哑结点。
  • 将进位 carry初始化为0。
  • 将p和q分别初始化为列表的头部。
  • 遍历列表直至到达它们的尾端。
    • 将x设为结点p的值。如果p已经到达$l1$的末尾,则将其值设置为0。
    • 将y设为结点q的值。如果q已经到达l2的末尾,则将其值设置为0。
    • 设定 $sum = x + y + carry$。
    • 更新进位的值,$carry = sum / 10$。
    • 创建一个数值为 (sum mod 10) 的新结点,并将其设置为当前结点的下一个结点,然后将当前结点前进到下一个结点。
    • 同时,将p和q前进到下一个结点。
    • 检查$carry = 1$是否成立,如果成立,则向返回列表追加一个含有数字$11$的新结点。
      返回哑结点的下一个结点。
      解法
 1/** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 *     int val; 5 *     ListNode *next; 6 *     ListNode(int x) : val(x), next(NULL) {} 7 * }; 8 */ 9class Solution {10public:11    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {12        ListNode *dummyHead = new ListNode(0);13        ListNode *cur = dummyHead;14        int carry = 0;                              //进位用15        while(l1 != NULL || l2 != NULL){16            int x = (l1 != NULL) ? l1 -> val :0;17            int y = ( l2 != NULL) ? l2 -> val : 0;18            int sum = carry + x + y;19            carry = sum / 10;                         //进位20            cur -> next = new ListNode(sum % 10);     //指向下一节点21            cur = cur -> next;22            if(l1 != NULL)23                l1 = l1->next;24            if(l2 != NULL)25                l2 = l2->next;26        }27        if(carry>0)28            cur->next = new ListNode(carry);    //加上进位29        return dummyHead->next;30    }31};

转载于:https://www.cnblogs.com/ywx123/p/9971567.html

Leetcode:0002(两数之和)相关推荐

  1. [leetcode]1.两数之和

    [leetcode]1.两数之和 题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应 ...

  2. [hashmap|空间换时间] leetcode 1 两数之和

    [hashmap|空间换时间] leetcode 1 两数之和 1.题目 题目链接 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下 ...

  3. C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组

    C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在 ...

  4. LeetCode 1. 两数之和

    LeetCode 1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入 ...

  5. 【前端来刷LeetCode】两数之和与两数相加

    大部分玩前端的小伙伴,在算法上都相对要薄弱些,毕竟调样式.调兼容就够掉头发的了,哪还有多余的头发再去折腾. 确实在前端中需要使用到算法的地方是比较少,但若要往高级方向发展,算法的基本功就非常重要啦.对 ...

  6. leetCode:twoSum 两数之和 【JAVA实现】

    LeetCode 两数之和 给定一个整数数组,返回两个数字的索引,使它们相加到特定目标. 您可以假设每个输入只有一个解决方案,并且您可能不会两次使用相同的元素. 更多文章查看个人博客 个人博客地址:t ...

  7. 力扣(leetcode)-1. 两数之和

    描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数组 ...

  8. LeetCode 01两数之和02两数相加

    力扣 LeetCode01两数之和 LeetCode02两数之加 前言:第一次LeetCode打卡题解,前面组织的打卡活动从今天开始正式开始了,很多csdn和公众号小伙伴以及加入了,欢迎加入!详细看力 ...

  9. Leetcode 1. 两数之和 (Python版)

    有粉丝说我一个学算法的不去做Leetcode是不是浪费,于是今天闲来没事想尝试一下Leetcode,结果果断翻车,第一题没看懂,一直当我看到所有答案的开头都一样的时候,我意识到了我是个铁憨憨,人家是让 ...

  10. 【LeetCode】两数之和

    package leetcode.editor.cn;//给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. // // 你可 ...

最新文章

  1. 关于captive portal
  2. 35张非常精美的爱情桌面壁纸资源(下篇)
  3. 在线做计算机考研题,2018年计算机考研真题及参考答案
  4. Spring Boot (1) 构建第一个Spring Boot工程
  5. 程序员自我提高的几点建议 很实诚
  6. 少走弯路,给3~5年程序员的唯一一条建议
  7. JDK配置与防火墙设置
  8. springboot实战pdf_腾讯架构师Spring Boot实战篇(PDF文档)
  9. desktop.ini winxp之马上更新图标
  10. 如何在自己开发的日程管理页面插入提醒功能_给大家推荐一款高颜值的日程管理类APP...
  11. 国内三大知名开源B2B2C多用户商城系统对比
  12. 单细胞测序的marker基因
  13. 一文讲懂蓝绿发布和金丝雀发布
  14. 滴滴出行DIDI美国IPO上市路演PPT:Roadshow Presentation
  15. 刺猬乐队在唯品会工作过_Microsoft乐队是您从未听说过的出色智能手表和健身追踪器...
  16. md文件的正确打开方式
  17. java集合源码分析
  18. js 下载 download
  19. Water Research | 南科大夏雨组揭示Anammox菌群微米级空间异质性和保守互作
  20. 顶级文案到底需要怎么嗨?

热门文章

  1. description方法
  2. 对ContentProvider中getType方法的一点理解
  3. HTML5 上传图片预览
  4. 网页制作中如何自定义网页图标
  5. ADT-bundle
  6. Android 自定义Application
  7. mysqldump造成Buffer Pool污染的研究 [转]
  8. spring eureka集群+spring boot 微服务,容器化部署示例
  9. CNN训练模型 花卉
  10. void Update ( ) 更新 void FixedUpdate ( )