題目連結

題型解說

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

需要設計一個方法,此方法有兩個 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;
    }
}