本文共 2198 字,大约阅读时间需要 7 分钟。
Add Two Numbers
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
Java代码:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode head = new ListNode(0); ListNode tmp = head; boolean flag = false; while (l1 != null && l2 != null) { if (true == flag) { if ((l1.val + l2.val) < 9) { tmp.val = l1.val + l2.val + 1; flag = false; } else { tmp.val = l1.val + l2.val + 1 - 10; flag = true; } } else { if ((l1.val + l2.val) < 10) { tmp.val = l1.val + l2.val; flag = false; } else { tmp.val = l1.val + l2.val - 10; flag = true; } } if(null !=l2.next && null !=l1.next){ tmp.next = new ListNode(0); tmp = tmp.next; } l1 = l1.next; l2 = l2.next; } if (l1 == null && l2 == null) { if (true == flag) { tmp.next = new ListNode(1); } } else if (l1 == null) { tmp.next = new ListNode(0); tmp =tmp.next; while (l2 != null) { if (true == flag) { if (9 == l2.val) { tmp.val = 0; flag = true; } else { tmp.val = l2.val + 1; flag = false; } } else { tmp.val = l2.val; } if(null != l2.next) tmp.next = new ListNode(0); else{ if(true == flag){ tmp.next = new ListNode(1); flag = false; } } tmp = tmp.next; l2 = l2.next; } } else { tmp.next = new ListNode(0); tmp = tmp.next; while (l1 != null) { if (true == flag) { if (9 == l1.val) { tmp.val = 0; flag = true; } else { tmp.val = l1.val + 1; flag = false; } } else { tmp.val = l1.val; } if(null !=l1.next) tmp.next = new ListNode(0); else{ if(true == flag){ tmp.next = new ListNode(1); flag = false; } } tmp = tmp.next; l1 = l1.next; } } return head; }}
转载地址:http://ynuni.baihongyu.com/