LeetCode: 2_Add Two Numbers | 两个链表中的元素相加 | Medium
题目:
You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list. Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
解题思路:
两个链表中的元素相加相比普通的加法操作增加了一个层次,和两个数组中的元素相加意义上差不多,这个题可以引申到大数相加上。需要注意的是:进位的处理。
代码展示:
1 #include <iostream>
2 #include <cassert>
3
4 using namespace std;
5
6
7 //Definition for singly-linked list.
8 struct ListNode {
9 int val;
10 ListNode *next;
11 ListNode(int x) : val(x), next(NULL) {}
12 };
13
14 ListNode * insertNodes(int n)
15 {
16 ListNode *pNode = new ListNode(0);
17 ListNode *p = pNode;
18 int i = 0;
19 int m;
20 while(i < n) {
21 cin >> m;
22 ListNode *pIn = new ListNode(m);
23 p->next = pIn;
24 p = pIn;
25
26 i++;
27 }
28 return pNode->next;
29 }
30
31 void Print(ListNode *p)
32 {
33 ListNode *pT = p;
34 while(NULL != pT) {
35 cout << pT->val << " ";
36 pT = pT->next;
37 }
38 }
39
40 ListNode* addTwoNumbers(ListNode* l1, ListNode* l2)
41 {
42 assert(NULL != l1);
43 assert(NULL != l2);
44
45 ListNode *pRetNode = new ListNode(0);
46 ListNode *p = pRetNode;
47
48 int div = 0;
49 int nSumVal;
50 while (NULL != l1 || NULL != l2) {
51 int val1 = 0, val2 = 0;
52 if (NULL != l1) {
53 val1 = l1->val;
54 l1 = l1->next;
55 }
56 if (NULL != l2) {
57 val2 = l2->val;
58 l2 = l2->next;
59 }
60 nSumVal = val1 + val2 + div; //一个比较巧妙的进位相加的方式
61 div = nSumVal/10;
62 ListNode *pT = new ListNode(nSumVal%10);
63 p->next = pT;
64 p = pT;
65 }
66 if (div) {
67 p->next = new ListNode(div);
68 }
69 return pRetNode->next;
70 }
71
72 // int main()
73 // {
74 // ListNode *p1 = insertNodes(1);
75 // ListNode *p2 = insertNodes(4);
76 // ListNode *p = addTwoNumbers(p1,p2);
77 // Print(p);
78 // return 0;
79 // }
LeetCode: 2_Add Two Numbers | 两个链表中的元素相加 | Medium的更多相关文章
- Java实现 LeetCode 24 两两交换链表中的节点
24. 两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例: 给定 1->2->3-&g ...
- 【算法训练营day4】LeetCode24. 两两交换链表中的结点 LeetCode19. 删除链表的倒数第N个结点 LeetCode面试题 02.07. 链表相交 LeetCode142. 环形链表II
[算法训练营day4]LeetCode24. 两两交换链表中的结点 LeetCode19. 删除链表的倒数第N个结点 LeetCode面试题 02.07. 链表相交 LeetCode142. 环形链表 ...
- leetcode 24. 两两交换链表中的节点 及 25. K 个一组翻转链表
24. 两两交换链表中的节点 问题描述 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例: 给定 1->2-> ...
- 【LeetCode】24.两两交换链表中的节点
24.两两交换链表中的节点 知识点:链表 题目描述 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点.你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换). 示例 示例 1 ...
- [LeetCode] Add Two Numbers 两个数字相加
You are given two linked lists representing two non-negative numbers. The digits are stored in rever ...
- LeetCode-024-两两交换链表中的节点
两两交换链表中的节点 题目描述:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例说明请见LeetCode官网. 来源:力 ...
- lintcode-451-两两交换链表中的节点
451-两两交换链表中的节点 给一个链表,两两交换其中的节点,然后返回交换后的链表. 样例 给出 1->2->3->4, 你应该返回的链表是 2->1->4->3. ...
- NO.24两两交换链表中的节点
NO.24两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例:给定 1->2->3-&g ...
- 【python】Leetcode每日一题-删除排序链表中的重复元素
[python]Leetcode每日一题-删除排序链表中的重复元素 [题目描述] 存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 . 返回同 ...
随机推荐
- 51ak带你看MYSQL5.7源码4:实现SQL黑名单功能
博客迁移至: https://www.dboop.com/ 从事DBA工作多年 MYSQL源码也是头一次接触 尝试记录下自己看MYSQL5.7源码的历程 申明:个人Python编程很溜,但是C++还停 ...
- 南昌邀请赛I.Max answer 单调栈+线段树
题目链接:https://nanti.jisuanke.com/t/38228 Alice has a magic array. She suggests that the value of a in ...
- LNMP支持 多版本PHP
1.到 http://www.php.net/downloads.php(http://www.php.net/downloads.php) 选择合适的版本号,如 5.6.34 2.到 LNMP 1. ...
- 招聘ETL开发工程师
上班地点徐汇 本科以上学历 3年以上ETL开发经验熟悉Oracle数据库,精通PL SQL开发与优化,熟悉Vertica或者GreenPlum库优先 熟悉数据库性能优化,有海量数据处理经验优先 自荐 ...
- appium:运行脚本时,报404的解决办法
对于报404的错,不要怀疑,在环境正常的情况下,一定是你的端口被占用了. 就用:查看端口:netstat -aon|findstr 5037 查看进程:tasklist /fi "PID e ...
- expdp错误案例
转自:https://www.cnblogs.com/kerrycode/p/3960328.html Oracle数据泵(Data Dump)使用过程当中经常会遇到一些奇奇怪怪的错误案例,下面总结一 ...
- python之路(四)-set集合
set集合 set是一个无序且不重复的元素集合优点:访问速度快,解决重复问题 l1 = [1,2,34,5,6,7,4,3,3,] s2 = set(l1) #可以以列表元祖等作为参数传进来,set集 ...
- IDEA教程
IDE-Intellij IDEA 之前同事一直给我推荐IDEA,说跟eclipse相比就是石器时代的工具,我一直任何一个工具熟练起来都很牛逼,所以一直坚持使用eclipse,不过看了下IDEA的功能 ...
- 论文word排版相关插件
其中包括破解版的MathType.EndNote X7以及Aurora 链接:http://pan.baidu.com/s/1boRZTmf 密码:a6ai
- python xss相关的编码解码小脚本
1.功能分析: 实际工作中经常会遇到alert()之类的函数被防火墙过滤,而把alert()转化为ascii码放到String.fromCharCode()中就可以绕过,之前会一个一个查ascii表, ...