兩數(shù)相加,針對(duì)ListNode的練習(xí)

創(chuàng)建ListNode

public class ListNode {
    int val;  // 鏈表的值
    ListNode next;   // 下一個(gè)鏈表

    public ListNode(int val) {
        this.val = val;
    }
}

1.給鏈表賦值:

ListNode  l1= new ListNode(2);

2.從鏈表中取值:

ListNode  l1= new ListNode(2);
int a = l1.val ;

經(jīng)典練習(xí)題:

2. 兩數(shù)相加

給你兩個(gè) 非空 的鏈表,表示兩個(gè)非負(fù)的整數(shù)。它們每位數(shù)字都是按照 逆序 的方式存儲(chǔ)的,并且每個(gè)節(jié)點(diǎn)只能存儲(chǔ) 一位 數(shù)字。
請(qǐng)你將兩個(gè)數(shù)相加,并以相同形式返回一個(gè)表示和的鏈表。
你可以假設(shè)除了數(shù)字 0 之外,這兩個(gè)數(shù)都不會(huì)以 0 開(kāi)頭。

輸入:l1 = [2,4,3], l2 = [5,6,4]
輸出:[7,0,8]
解釋?zhuān)?42 + 465 = 807.

題解樣例
public class TestListNode {
    public static void main(String[] args) {
        // 構(gòu)造第一個(gè)鏈表數(shù)值l1
        ListNode l1 = new ListNode(2);
        l1.next = new ListNode(4);
        ListNode L2 = l1.next;
        L2.next = new ListNode(3);
        // 構(gòu)造第二個(gè)鏈表
        ListNode l2 = new ListNode(5);
        l2.next = new ListNode(6);
        ListNode next = l2.next;
        next.next = new ListNode(4);

        ListNode listNode = addTwoNumbers(l1, l2);
        System.out.println(listNode);
    }

    public static ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode list = new ListNode(0); // 構(gòu)建鏈表
        ListNode newList = list;
        int carry = 0;
        while (l1 != null || l2 != null) {
            // 取值
            int l1_1 = l1 != null ? l1.val : 0;
            int l2_2 = l2 != null ? l2.val : 0;
            int sum = carry + l1_1 + l2_2;
               carry = sum / 10;  // 計(jì)算carry
            newList.next = new ListNode(sum % 10);  // 為下一個(gè)節(jié)點(diǎn)賦值
            newList = newList.next;  // 指針移動(dòng)到下一個(gè)節(jié)點(diǎn)

            if (l1 != null) {
                l1 = l1.next;
            }
            if (l2 != null) {
                l2 = l2.next;
            }

        }
        if (carry > 0) {
            newList.next = new ListNode(carry);
        }
        return list.next;
    }

}

每天進(jìn)步一點(diǎn)點(diǎn)~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 題目描述 給你兩個(gè)非空的鏈表,表示兩個(gè)非負(fù)的整數(shù)。它們每位數(shù)字都是按照逆序的方式存儲(chǔ)的,并且每個(gè)節(jié)點(diǎn)只能存儲(chǔ)一位數(shù)...
    Leesper閱讀 190評(píng)論 0 1
  • 兩數(shù)相加 https://leetcode-cn.com/problems/add-two-numbers/[ht...
    Shimmer_閱讀 280評(píng)論 0 1
  • 給你兩個(gè) 非空 的鏈表,表示兩個(gè)非負(fù)的整數(shù)。它們每位數(shù)字都是按照 逆序 的方式存儲(chǔ)的,并且每個(gè)節(jié)點(diǎn)只能存儲(chǔ) 一位 ...
    Qiansion齊木楠雄閱讀 166評(píng)論 0 0
  • 給你兩個(gè) 非空 的鏈表,表示兩個(gè)非負(fù)的整數(shù)。它們每位數(shù)字都是按照 逆序 的方式存儲(chǔ)的,并且每個(gè)節(jié)點(diǎn)只能存儲(chǔ) 一位 ...
    大寫(xiě)的空氣閱讀 162評(píng)論 0 0
  • 線(xiàn)性表 定義:線(xiàn)性表就是數(shù)據(jù)排成像一條線(xiàn)一樣的結(jié)構(gòu)。每個(gè)線(xiàn)性表上的數(shù)據(jù)最多只有前和后兩個(gè)方向。其實(shí)除了數(shù)組,鏈表、...
    竹blue閱讀 410評(píng)論 0 0

友情鏈接更多精彩內(nèi)容