2015-05-23 LeetCode 2: Add Two Numbers 个人总结
来源:互联网 发布:大掌柜物流软件 编辑:程序博客网 时间:2024/06/06 19:25
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
分析:需要考虑两个链表长度是否一样,如果存在不一样,则需要将对多余长度部分进行处理。
<span style="background-color: rgb(255, 255, 255);"></span><pre name="code" class="cpp" style="color: rgb(51, 51, 51); font-size: 14px; line-height: 30px;"><pre name="code" class="cpp">/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { if (l1 == NULL) return l2; if (l2 == NULL) return l1; ListNode *sumlist = NULL, *pNode = NULL, *pNext = NULL;//sumlist指向新链表的头指针,pNode在循环中用来指向链表的最后一个节点,pNext指向新添加的节点。 ListNode *p = l1, *q = l2;//为了不破坏指针l1、l2本身的指向,构建临时链表指针 int up = 0;//一定要初始化为0 while (p != NULL && q != NULL) {//l1、l2任意一个链表读取完时结束循环1 pNext = new ListNode(p->val + q->val + up); up = pNext->val /10; pNext->val = pNext->val %10; if (sumlist == NULL) sumlist = pNode = pNext; else { pNode->next = pNext; pNode = pNext; } p = p->next; q = q->next; } while (p != NULL) {//处理l1剩余部分 pNext = new ListNode(p->val + up); up = pNext->val /10; pNext->val = pNext->val %10; pNode->next = pNext; pNode = pNext; p = p->next; } while (q != NULL) {//处理l2剩余部分 pNext = new ListNode(q->val + up); up = pNext->val /10; pNext->val = pNext->val %10; pNode->next = pNext; pNode = pNext; q = q->next; } if (up > 0) {最高位进位 pNext = new ListNode(up); pNode->next = pNext; } return sumlist; }};
错误分析: 1、刚开始未考虑链表长度不一的问题。
2、整型变量up未设初始值,导致循环部分第一句运算结果就有错误,结果随机错误。
3、未掌握new ListNode的用法。
4、链表节点链接是顺序的问题要注意
0 0
- 2015-05-23 LeetCode 2: Add Two Numbers 个人总结
- 个人记录-LeetCode 2.Add Two Numbers
- LeetCode 2 - Add Two Numbers
- LeetCode 2: Add Two Numbers
- Leetcode: Add Two Numbers (2)
- [leetcode 2] Add Two Numbers
- [Leetcode] 2 - Add Two Numbers
- LeetCode 2:《Add Two Numbers》
- LeetCode | #2 Add Two Numbers
- LeetCode 2 Add Two Numbers
- [Leetcode]2Add Two Numbers
- leetcode #2 Add Two Numbers
- leetcode-2 Add Two Numbers
- LeetCode 2 Add Two Numbers
- [leetcode] #2 Add Two Numbers
- LeetCode-2 Add Two Numbers
- LeetCode-2-Add Two Numbers
- Leetcode[2] Add Two Numbers
- hdu 5700 区间交 (multiset)
- iOS技术总览(一):介绍
- SQL查询之组合查询
- LeetCode 146. LRU Cache(LRU缓存)
- 关于HANA的schame
- 2015-05-23 LeetCode 2: Add Two Numbers 个人总结
- 理解Java中字符流与字节流的区别
- 344. Reverse String
- Android M 新的运行时权限开发者需要知道的一切
- 蓝桥杯历届试题 分糖果
- Android伪守护进程(通过AIDL实现)
- jQuery.autocomplete自动补全
- CSS设置背景色渐变显示
- Proguard returned with error code 1. See console