第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

我有一個(gè)關(guān)于這個(gè)鏈表合并代碼如何工作的快速問題

我有一個(gè)關(guān)于這個(gè)鏈表合并代碼如何工作的快速問題

滄海一幻覺 2023-06-09 17:20:26
我對(duì) head.next 如何返回整個(gè)列表而不是下一個(gè)值感到困惑,例如下面的代碼中的 l1,l2,dummy .next。特別是我想知道 head.next 如何返回整個(gè)排序數(shù)組并跳過在第二行輸入的 -1 值。let mergeTwoLists = function (l1, l2) {  let dummy = new ListNode(-1);  let head = dummy;  while (l1 !== null && l2 !== null) {    if (l1.val <= l2.val) {      dummy.next = l1;      l1 = l1.next;    } else {      dummy.next = l2;      l2 = l2.next;    }    dummy = dummy.next;  }  if (l1 !== null) {    dummy.next = l1;  } else {    dummy.next = l2;  }  return head.next;};class ListNode {  constructor(val = null, next = null) {    this.val = val;    this.next = next;  }}
查看完整描述

1 回答

?
aluckdog

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊

可視化列表的構(gòu)建方式可能會(huì)有所幫助:


讓輸入是一個(gè)列表,其中包含值 [3, 9] 和另一個(gè)只有 [4] 的列表:


 l1

 ↓

 3 → 9 → null


 l2

 ↓

 4 → null

在循環(huán)開始之前創(chuàng)建一個(gè)新節(jié)點(diǎn):


head

 ↓

-1

 ↑

dummy

循環(huán)將進(jìn)行第一次迭代,并且if條件為真。首先dummmy.next是適配,導(dǎo)致出現(xiàn)這種情況:


head l1

 ↓   ↓

-1 → 3 → 9 → null

 ↑

dummy    


 l2

 ↓

 4 → null

...然后l1重新分配一個(gè)新的參考:


head     l1

 ↓       ↓

-1 → 3 → 9 → null

 ↑

dummy    


 l2

 ↓

 4 → null

循環(huán)中的最后一條語句為 分配了一個(gè)新引用dummy:


head     l1

 ↓       ↓

-1 → 3 → 9 → null

     ↑

    dummy    


 l2

 ↓

 4 → null

循環(huán)第二次迭代,if現(xiàn)在條件為假,所以我們進(jìn)入else代碼塊。Firstdummmy.next被改編(這打破了它與 的鏈接l1,所以我移動(dòng)了l1和的可視化l2):


head     l2

 ↓       ↓

-1 → 3 → 4 → null

     ↑

    dummy    


 l1

 ↓

 9 → null

...然后l1重新分配一個(gè)新的引用,在這種情況下它變成null:


head          l2

 ↓            ↓

-1 → 3 → 4 → null

     ↑

    dummy    


 l1

 ↓

 9 → null

循環(huán)中的最后一條語句為 分配了一個(gè)新引用dummy:


head          l2

 ↓            ↓

-1 → 3 → 4 → null

         ↑

        dummy    


 l1

 ↓

 9 → null

在此階段,循環(huán)條件不再為真 ( l2is null),因此if執(zhí)行循環(huán)后面的塊。這dummy.next與其余(不是null)參考鏈接。同樣,為了可視化,我交換了l1和的位置l2:


head         l1

 ↓           ↓

-1 → 3 → 4 → 9 → null

         ↑

        dummy    


 l2

 ↓

null

現(xiàn)在我們到了最后的聲明:return head.next。請(qǐng)注意headdid 從未離開在開始時(shí)創(chuàng)建的新節(jié)點(diǎn)。


所以返回的引用是:


head         l1

 ↓           ↓

-1 → 3 → 4 → 9 → null

     ↑

    returned    


 l2

 ↓

null

注意head在這個(gè)函數(shù)的整個(gè)執(zhí)行過程中如何一直指向帶有 -1 的節(jié)點(diǎn)。head值為 -1 的臨時(shí)節(jié)點(diǎn)將被垃圾回收,因?yàn)橐坏┖瘮?shù)返回(是局部變量) ,就沒有變量再引用它。


查看完整回答
反對(duì) 回復(fù) 2023-06-09
  • 1 回答
  • 0 關(guān)注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)