leetcode2 add two number
2016-06-13 15:27
405 查看
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
这道题思路简单,主要是处理各种边界情况,比如一开始我没有考虑到5+5 =10这种情况,导致结果是0.
/**
* Created by kyle on 2016/6/13.
*/
public class Add2Sum {
static ListNode addTwoNumbers(ListNode l1, ListNode l2) {
if(l1 == null || l2 == null){
return null;
}
int overflow = 0;
ListNode result = new ListNode(0);
ListNode head = result;
int dig;
int sum = 0;
while(!(l1 == null && l2 == null)){
int val1, val2;
if(l1 == null){
val1 = 0;
}else {
val1 = l1.val;
l1 = l1.next;
}
if(l2 == null){
val2 =0;
}else {
val2 = l2.val;
l2 = l2.next;
}
sum =val1+ val2 + overflow;
if(sum >=10){
dig =sum -10;
overflow =1;
}else {
dig = sum;
overflow = 0;
}
result.next = new ListNode(dig);
result = result.next;
}
if(overflow > 0){
result.next = new ListNode(overflow);
}
return head.next;
}
static public void main(String[] args){
ListNode l1 = new ListNode(6);
// l1.next = new ListNode(5);
ListNode l2 = new ListNode(8);
ListNode l3 = addTwoNumbers(l1, l2);
System.out.println(l3.toString());
}
}
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
这道题思路简单,主要是处理各种边界情况,比如一开始我没有考虑到5+5 =10这种情况,导致结果是0.
/**
* Created by kyle on 2016/6/13.
*/
public class Add2Sum {
static ListNode addTwoNumbers(ListNode l1, ListNode l2) {
if(l1 == null || l2 == null){
return null;
}
int overflow = 0;
ListNode result = new ListNode(0);
ListNode head = result;
int dig;
int sum = 0;
while(!(l1 == null && l2 == null)){
int val1, val2;
if(l1 == null){
val1 = 0;
}else {
val1 = l1.val;
l1 = l1.next;
}
if(l2 == null){
val2 =0;
}else {
val2 = l2.val;
l2 = l2.next;
}
sum =val1+ val2 + overflow;
if(sum >=10){
dig =sum -10;
overflow =1;
}else {
dig = sum;
overflow = 0;
}
result.next = new ListNode(dig);
result = result.next;
}
if(overflow > 0){
result.next = new ListNode(overflow);
}
return head.next;
}
static public void main(String[] args){
ListNode l1 = new ListNode(6);
// l1.next = new ListNode(5);
ListNode l2 = new ListNode(8);
ListNode l3 = addTwoNumbers(l1, l2);
System.out.println(l3.toString());
}
}
public class ListNode { int val; ListNode next; ListNode(int x) { val = x; } }
相关文章推荐
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- leetcode----Longest Substring Without Repeating Characters
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- leetcode_linearList
- leetcode_linearList02
- 021-Merge Two Sorted Lists(合并两个排好序的单链表);leetcode
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解