LeetCode 2 - Add Two Numbers ( JAVA )
2016-04-04 16:59
645 查看
Difficulity :
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
/**
* 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) {
ListNode prev = new ListNode(0);
ListNode head = prev;
int carry = 0;
while (l1 != null || l2 != null || carry != 0) {
ListNode cur = new ListNode(0);
int sum = ((l2 == null) ? 0 : l2.val) + ((l1 == null) ? 0 : l1.val) + carry;
cur.val = sum % 10;
carry = sum / 10;
prev.next = cur; //使下以个指针指向cur
prev = prev.next; //移动一个指针
l1 = (l1 == null) ? l1 : l1.next;
l2 = (l2 == null) ? l2 : l2.next;
}
return head.next;
}
};
总结:效率比较高,对本题的理解可以画内存图,head和prev同时指向一个内存空间,之后移动prev指针指向下一个。head链表在不断的加长。
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
/**
* 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) {
ListNode prev = new ListNode(0);
ListNode head = prev;
int carry = 0;
while (l1 != null || l2 != null || carry != 0) {
ListNode cur = new ListNode(0);
int sum = ((l2 == null) ? 0 : l2.val) + ((l1 == null) ? 0 : l1.val) + carry;
cur.val = sum % 10;
carry = sum / 10;
prev.next = cur; //使下以个指针指向cur
prev = prev.next; //移动一个指针
l1 = (l1 == null) ? l1 : l1.next;
l2 = (l2 == null) ? l2 : l2.next;
}
return head.next;
}
};
总结:效率比较高,对本题的理解可以画内存图,head和prev同时指向一个内存空间,之后移动prev指针指向下一个。head链表在不断的加长。
相关文章推荐
- 深入理解java中的synchronized关键字
- java 数字证书生成及证书的加密解密
- Struts2 validation 错误信息重复不消失的问题
- SpringMVC学习记录(二)--controller和view的联系
- javabean, ejb, entitybean的区别,以及POJO的概念
- LeetCode 1 - Two Sum ( JAVA )
- java文件读取Scanner
- 【java集合框架源码剖析系列】java源码剖析之java集合中的折半插入排序算法
- 【java集合框架源码剖析系列】java源码剖析之java集合中的折半插入排序算法
- Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法
- 自定义的ArrayList
- java中类与类、类与接口、接口与接口之间的关系
- Java语言基础小结
- 在js中模拟Java中的Map
- spring mvc 预习
- JAVA中的成员变量与局部变量
- java 访问权限控制
- spring 事物
- AutoCAD 2016 制图软件
- 深入探索spring技术内幕(一): spring概述