LeetCode 2 Add Two Numbers
You are given two non-empty linked lists representing two non-negative integers. 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.
You may assume the two numbers do not contain any leading zero, except the number 0 itself.
Example:
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
Explanation: 342 + 465 = 807.
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode list = new ListNode(0);
ListNode node = list;
int count = 0;
while(l1 != null && l2 != null){
//count = (l1.val + l2.val) / 10;
int sum = l1.val + l2.val + count;
count = sum / 10;
node.next = new ListNode(sum % 10);
node = node.next;
l1 = l1.next;
l2 = l2.next;
}
while(l1 != null){
int sum = l1.val + count;
count = sum / 10;
node.next = new ListNode(sum % 10);
node = node.next;
l1 = l1.next;
}
while(l2 != null){
int sum = l2.val + count;
count = sum / 10;
node.next = new ListNode(sum % 10);
node = node.next;
l2 = l2.next;
}
if(count > 0){
node.next = new ListNode(count);
}
return list.next;
}
}
官方的題解:
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;
}
時間複雜度:O(n)
空間複雜度:O(n)
相關文章
- LeetCode-2 Add Two NumbersLeetCode
- LeetCode 2. Add Two NumbersLeetCode
- LeetCode2: Add two numbers(兩數相加)LeetCode
- Fifth. LeetCode 2:Add Two Numbers 兩數之和LeetCode
- Add_Two_Numbers python 求解Python
- leetcode 兩數相加(add two numbers) Python程式設計實現LeetCodePython程式設計
- 421-Maximum XOR of Two Numbers in an Array
- Leetcode 165 Compare Version NumbersLeetCode
- Leetcode 67 Add BinaryLeetCode
- Leetcode 231 Power of TwoLeetCode
- Leetcode 1 two sumLeetCode
- LeetCode | 1 Two SumLeetCode
- Leetcode 967 Numbers With Same Consecutive DifferencesLeetCode
- [LeetCode] 258. Add DigitsLeetCodeGit
- Leetcode 29 Divide Two IntegersLeetCodeIDE
- LeetCode-1 Two SumLeetCode
- [LeetCode]1.Two SumLeetCode
- LeetCode | 349 Intersection Of Two ArraysLeetCode
- Leetcode 231. Power of TwoLeetCode
- python: leetcode - 1 Two SumPythonLeetCode
- LeetCode 129. Sum Root to Leaf NumbersLeetCode
- [LeetCode] 282. Expression Add OperatorsLeetCodeExpress
- leetcode-29. Divide Two IntegersLeetCodeIDE
- Leetcode 21 Merge Two Sorted ListsLeetCode
- LeetCode: Two sum(兩數之和)LeetCode
- [LeetCode] 29. Divide Two IntegersLeetCodeIDE
- Leetcode 4 Median of Two Sorted ArraysLeetCode
- 【Leetcode】1029. Two City SchedulingLeetCode
- leetcode 371. Sum of Two IntegersLeetCode
- LeetCode之Sum of Even Numbers After Queries(Kotlin)LeetCodeKotlin
- LeetCode 448. Find All Numbers Disappeared in an ArrayLeetCodeAPP
- Two Pirates - 2
- LeetCode 21. Merge Two Sorted ListsLeetCode
- LeetCode 4. Median of Two Sorted ArraysLeetCode
- LeetCode #1:Two Sum(簡單題)LeetCode
- LeetCode Two Sum(001)解法總結LeetCode
- leetcode 350. Intersection of Two Arrays IILeetCode
- 【LeetCode】617. Merge Two Binary TreesLeetCode