[LeetCode] #2 Add Two Numbers 解題

題目連結

題型解說

這是一題難度為普通的題目

需要設計一個方法,此方法有兩個 Linked lists 參數

這兩個參數有以下特性

  1. 皆為正整數
  2. 鏈表中的數字順序相反
  3. 沒有前導0,也就是不會出現 080 這種數字
  4. 兩者都非空

要求是加總這兩個鏈表中的數字後以倒序的方式回傳

解題思路

創建兩個鏈表變數,一個代表起始點,一個代表結束點

一個 while 迴圈走訪所有的元素做加總

程式碼

Java

public class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode temp = new ListNode(0);
        ListNode result = temp;
        
        int num1 = 0;
        int num2 = 0;
        
        while (l1 != null || l2 != null || num2 > 0) {
            if (l1 != null) {
                num1 += l1.val;
                l1 = l1.next;
            } 
            
            if (l2 != null) {
                num1 += l2.val;
                l2 = l2.next;
            }
            
            num1 += num2;
            
            if (num1 > 9) {
                num1 -= 10;
                num2 = 1;
            } else {
                num2 = 0;
            }
            
            temp.next = new ListNode(num1);
            temp = temp.next;
            
            num1 = 0;
        }
        
        return result.next;
    }
}