[Lesson Learn] LeetCode #2 Add Two Numbers
来源:互联网 发布:新网域名转入腾讯云 编辑:程序博客网 时间:2024/05/17 23:01
本题思路很简单,就是合并两个链表,这是数据结构方面最基础的题目。
我自己写的代码就不贴了,跟LeetCode官方提供的代码差太远……需要好好学习。
以下是官方提供的Java代码:
public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode dummyHead = new ListNode(0); ListNode p = l1, q = l2, curr = dummyHead; int carry = 0; while (p != null || q != null) { int x = (p != null) ? p.val : 0; int y = (q != null) ? q.val : 0; int sum = carry + x + y; carry = sum / 10; curr.next = new ListNode(sum % 10); curr = curr.next; if (p != null) p = p.next; if (q != null) q = q.next; } if (carry > 0) { curr.next = new ListNode(carry); } return dummyHead.next;}
[Lesson Learn]
1. 建立3个新的链表,使得遍历链表时不影响原来的链表。
2. 代码复用率。两个链表不一样长,这个是很容易想到的。但如何处理就看出水平了。将判断写在while上,则需要写三个while语句(l1和l2都没有遍历完,l1遍历完而l2没有遍历完,l1没有遍历完而l2遍历完),三段代码彼此仅仅只有几行不一样,代码复用率太低。而将判断写在while语句里,则代码复用率得到极大提升。
3. 条件运算符。使用条件运算符,优化了代码,简洁明了。
4. 理解原理是一回事,写出能用的代码是另一回事。切勿眼高手低。
附:
LeetCode #2 题目
LeetCode #2 官方“参考答案”
0 0
- [Lesson Learn] 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
- LeetCode 2 Add Two Numbers
- 监听器
- 双线性插值
- 互斥锁,自旋锁与自适应自旋锁
- CUDA CUBLAS第一个程序 漂亮的VIM
- Drawable资源——Transition Drawable
- [Lesson Learn] LeetCode #2 Add Two Numbers
- Programming Clojure笔记之一——入门
- Cookie
- Android Binder通信机制学习
- 关于PHP路径
- 使用Autolayout实现UITableView的Cell动态布局和高度动态改变
- CORS(跨域访问) 服务端流程图
- LTE系统信息(1)-MIB
- ViewPager动态变换效果之SCViewPager源码解析