Leetcode:0002(两数之和)
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(两数之和)相关推荐
- [leetcode]1.两数之和
[leetcode]1.两数之和 题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应 ...
- [hashmap|空间换时间] leetcode 1 两数之和
[hashmap|空间换时间] leetcode 1 两数之和 1.题目 题目链接 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下 ...
- C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组
C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在 ...
- LeetCode 1. 两数之和
LeetCode 1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入 ...
- 【前端来刷LeetCode】两数之和与两数相加
大部分玩前端的小伙伴,在算法上都相对要薄弱些,毕竟调样式.调兼容就够掉头发的了,哪还有多余的头发再去折腾. 确实在前端中需要使用到算法的地方是比较少,但若要往高级方向发展,算法的基本功就非常重要啦.对 ...
- leetCode:twoSum 两数之和 【JAVA实现】
LeetCode 两数之和 给定一个整数数组,返回两个数字的索引,使它们相加到特定目标. 您可以假设每个输入只有一个解决方案,并且您可能不会两次使用相同的元素. 更多文章查看个人博客 个人博客地址:t ...
- 力扣(leetcode)-1. 两数之和
描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数组 ...
- LeetCode 01两数之和02两数相加
力扣 LeetCode01两数之和 LeetCode02两数之加 前言:第一次LeetCode打卡题解,前面组织的打卡活动从今天开始正式开始了,很多csdn和公众号小伙伴以及加入了,欢迎加入!详细看力 ...
- Leetcode 1. 两数之和 (Python版)
有粉丝说我一个学算法的不去做Leetcode是不是浪费,于是今天闲来没事想尝试一下Leetcode,结果果断翻车,第一题没看懂,一直当我看到所有答案的开头都一样的时候,我意识到了我是个铁憨憨,人家是让 ...
- 【LeetCode】两数之和
package leetcode.editor.cn;//给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. // // 你可 ...
最新文章
- 关于captive portal
- 35张非常精美的爱情桌面壁纸资源(下篇)
- 在线做计算机考研题,2018年计算机考研真题及参考答案
- Spring Boot (1) 构建第一个Spring Boot工程
- 程序员自我提高的几点建议 很实诚
- 少走弯路,给3~5年程序员的唯一一条建议
- JDK配置与防火墙设置
- springboot实战pdf_腾讯架构师Spring Boot实战篇(PDF文档)
- desktop.ini winxp之马上更新图标
- 如何在自己开发的日程管理页面插入提醒功能_给大家推荐一款高颜值的日程管理类APP...
- 国内三大知名开源B2B2C多用户商城系统对比
- 单细胞测序的marker基因
- 一文讲懂蓝绿发布和金丝雀发布
- 滴滴出行DIDI美国IPO上市路演PPT:Roadshow Presentation
- 刺猬乐队在唯品会工作过_Microsoft乐队是您从未听说过的出色智能手表和健身追踪器...
- md文件的正确打开方式
- java集合源码分析
- js 下载 download
- Water Research | 南科大夏雨组揭示Anammox菌群微米级空间异质性和保守互作
- 顶级文案到底需要怎么嗨?