leetcode2 两数相加
题目描述:
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807
解法1:
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {ListNode *p,*q;int len1 = 1; //l1的长度int len2 = 1; //l2的长度int flag = 0;int res = 0;p=l1;q=l2;while(p->next!=NULL){len1++ ;p=p->next;}while(q->next!=NULL){len2++;q=q->next;}if(len1>len2){for(int m = 0 ; m<len1-len2;m++){q->next=new ListNode(0);q=q->next;}}else if(len1<len2){for(int n = 0 ; n<len2-len1;n++){p->next=new ListNode(0);p=p->next;}}p=l1;q=l2;ListNode *l3 = new ListNode(-1);ListNode *w = l3;while(p!=NULL&&q!=NULL){res = flag+p->val + q->val;w->next = new ListNode(res%10);flag = res>=10?1:0;w=w->next;p=p->next;q=q->next;}if(flag){w->next = new ListNode(1);w=w->next;}return l3->next;}
};
我自己没想到的这道题的两个关键:
- 进位最多为1,可以通过是否大于10直接判断进位
- 这个是逆序存储,所以进位的值直接累加到下一个(next)指针的值即可
一些值得注意的code piece
while(p!=NULL&&q!=NULL){res = flag+p->val + q->val; flag = res>=10?1:0; //flag值可以由循环后面的值来决定 可以看到这里的flag直接影响的是下一次循环的下一个res值//比较常见的trick是先给flag赋值为0,后续会改变flag因而改变结果w=w->next;p=p->next;q=q->next;}
leetcode2 两数相加相关推荐
- LeetCode2.两数相加
LeetCode2.两数相加 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会 ...
- [Swift]LeetCode2. 两数相加 | Add Two Numbers
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
- Leetcode-2 两数相加【c语言】
题目描述 给你两个 非空 的链表,表示两个非负的整数.它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字. 请你将两个数相加,并以相同形式返回一个表示和的链表. 你可以假设除了 ...
- leetcode-2 两数相加
给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和 ...
- leetcode2. 两数相加--每天刷一道leetcode系列!
来自:程序员面试 作者:reed,一个热爱技术的斜杠青年,程序员面试联合创始人 题目描述 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节 ...
- 简单算法题:leetcode-2 两数相加
算法撸一遍,从简单的开始. 做leetcode题目的时候,经常百度答案,但感觉大多不是我想要的,很多我不能理解.现在也做了一些算法题,哪些并不是很深奥,但需要一些技巧,简单的算法题更多的是经验值.这里 ...
- Leetcode--2. 两数相加
给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和 ...
- LeetCode2. 两数相加
题目描述: 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来 ...
- leetCode刷题 2. 两数相加
原题链接: leetcode-cn.com/problems/ad- 题目描述 给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你 ...
最新文章
- ThreadGroup分析
- 如何将frm文件导入MySql数据库
- SpringBoot笔记:SpringBoot2.3读取应用配置参数的几种方式
- java远程监控服务器配置_JAVA VirtualVM远程监控配置
- 计算机网络选择重传,计算机网络选择重传协议实验报告..docx
- 把iconfront的资源放cdn访问_详解mpvue小程序中怎么引入iconfont字体图标
- matlab weibpdf函数,matlab建模常用函数
- python字典编码_Python列表,字典,元组,字符串操作,文件操作,字符编码
- 环境部署(二):Linux下安装jenkins
- drop user和drop user cascade的区别
- ctf练习之音频文件
- 【qt】QWS和 QPA
- Python网络爬虫数据采集实战:基础知识
- FFFfrance博客介绍
- 应用市场首发,APP推广如何应对
- “马赛克”真能去除了?老司机狂喜!
- 共射级放大电路—密勒电容影响下的压摆率
- 程序化广告(5):广告投放
- 淘宝信誉查询软件 官网免费版
- BT.656接口速率