leetcode給你兩個 非空 的鏈表,表示兩個非負的整數。它們每位數字都是按照 逆序 的方式存儲的,並且每個節點只能存儲 一位 數字


//給你兩個 非空 的鏈表,表示兩個非負的整數。它們每位數字都是按照 逆序 的方式存儲的,並且每個節點只能存儲 一位 數字。
//
// 請你將兩個數相加,並以相同形式返回一個表示和的鏈表。
//
// 你可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。
//
//
//
// 示例 1:
//
//
//輸入:l1 = [2,4,3], l2 = [5,6,4]
//輸出:[7,0,8]
//解釋:342 + 465 = 807.
//
//
// 示例 2:
//
//
//輸入:l1 = [0], l2 = [0]
//輸出:[0]
//
//
// 示例 3:
//
//
//輸入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
//輸出:[8,9,9,9,0,0,0,1]
//
//
//
//
// 提示:
//
//
// 每個鏈表中的節點數在范圍 [1, 100] 內
// 0 <= Node.val <= 9
// 題目數據保證列表表示的數字不含前導零
//
// Related Topics 遞歸 鏈表 數學
// 👍 5539 👎 0


//leetcode submit region begin(Prohibit modification and deletion)

import java.util.List;

/**
 * Definition for singly-linked list.
 * public class ListNode {
 * int val;
 * ListNode next;
 * ListNode() {}
 * ListNode(int val) { this.val = val; }
 * ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        // 相加后位上的數
        int n = 0;
        //n1 n2接收者
        int n1 = 0;
        int n2 = 0;
        //ca 是否進位
        int ca = 0;
        ListNode c1 = l1;
        ListNode c2 = l2;
        ListNode pre = null;
        ListNode node = null;
        while (c1 != null || c2 != null) {
            n1 = c1 != null ? c1.val : 0;
            n2 = c2 != null ? c2.val : 0;
            n = n1 + n2 + ca;
            pre = node;
            node = new ListNode(n % 10);
            node.next = pre;
            ca = n / 10;
            c1 = c1 != null ? c1.next : null;
            c2 = c2 != null ? c2.next : null;
        }
        if (ca == 1) {
            pre = node;
            node = new ListNode(1);
            node.next = pre;
        }
        return reverseList(node);
    }


    public static ListNode reverseList(ListNode node) {
        ListNode pre = null;
        ListNode cur = node;
        ListNode nodeRes = null;
        while (cur != null) {
            ListNode temp = cur.next;
            pre = nodeRes;
            nodeRes = new ListNode(cur.val);
            nodeRes.next = pre;
            pre=cur;
            cur = temp;
        }
        return nodeRes;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



猜您在找 給出兩個 非空 的鏈表用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式存儲的,並且它們的每個節點只能存儲 一位 數字。 給出兩個 非空 的鏈表用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式存儲的,並且它們的每個節點只能存儲 一位 數字。 如果,我們將這兩個數相加起來,則會返回一個新的鏈表來表示它們的和。 給出兩個 非空 的鏈表用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式存儲的,並且它們的每個節點只能存儲 一位 數字。 如果,我們將這兩個數相加起來,則會返回一個新的鏈表來表示它們的和。 給出兩個 非空 的鏈表用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式存儲的,並且它們的每個節點只能存儲 一位 數字。 如果,我們將這兩個數相加起來,則會返回一個新的鏈表來表示它們的和。 您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。 給定兩個非空鏈表來表示兩個非負整數。位數按照逆序方式存儲,它們的每個節點只存儲單個數字。將兩數相加返回一個新的鏈表。 Leetcode練習(Python):第66題:給定一個由整數組成的非空數組所表示的非負整數,在該數的基礎上加一。 最高位數字存放在數組的首位, 數組中每個元素只存儲單個數字。 你可以假設除了整數 0 之外,這個整數不會以零開頭。 給定一個非負整數 num,反復將各個位上的數字相加,直到結果為一位數。 給定一個非負整數 num,反復將各個位上的數字相加,直到結果為一位數。 給定一個非負整數 num,反復將各個位上的數字相加,直到結果為一位數 c0605_兩個超長正整數(每個最長80位數字)的加法運算
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM