LeetCode-002-兩數相加
阿新 • • 發佈:2021-06-13
兩數相加
題目描述:給你兩個 非空 的連結串列,表示兩個非負的整數。它們每位數字都是按照 逆序 的方式儲存的,並且每個節點只能儲存 一位 數字。
請你將兩個數相加,並以相同形式返回一個表示和的連結串列。
你可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。
示例說明請見LeetCode官網。
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/add-two-numbers
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
解法一:連結串列遍歷
遍歷2個連結串列,值相加,記錄是否進位+1。
注意點:當遍歷到2個連結串列的最後一個值時,需要注意是否進位,如果有進位,需要新增一個節點。
public class Solution { public static ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode result = new ListNode(0); ListNode cur = result; int addOne = 0; while (l1 != null || l2 != null) { int sum = 0; sum += addOne; if (l1 != null) { sum += l1.val; l1 = l1.next; } if (l2 != null) { sum += l2.val; l2 = l2.next; } addOne = sum / 10; cur.next = new ListNode(sum % 10); cur = cur.next; } if (addOne > 0) { cur.next = new ListNode(addOne); } return result.next; } public static void main(String[] args) { ListNode l1 = new ListNode(2); l1.next = new ListNode(4); l1.next.next = new ListNode(3); ListNode l2 = new ListNode(5); l2.next = new ListNode(6); l2.next.next = new ListNode(4); ListNode result = addTwoNumbers(l1, l2); System.out.println("result:"); while (result != null) { System.out.print(result.val + " "); result = result.next; } } } class ListNode { int val; ListNode next; ListNode(int x) { val = x; } }