代碼隨想錄算法訓(xùn)練營第三天 | 203.移除鏈表元素 707.設(shè)計(jì)鏈表 206.反轉(zhuǎn)鏈表

鏈表分為單鏈表,雙向鏈表和循環(huán)鏈表。? ? ? ? ? ??

不同于數(shù)組。鏈表中的節(jié)點(diǎn)在內(nèi)存中的分布不是連續(xù)的,而是散落分布的。鏈表用于插入和查詢的效率更高,相反,數(shù)組更多用于查詢。js中自定義鏈表:

function ListNode(val, next) {

????this.val = (val===undefined ? 0 : val)

????this.next = (next===undefined ? null : next)

}

203.移除鏈表元素??

#1 自己看到題目的第一想法??

鏈表的移除操作,即如果當(dāng)前的 value 為 target,那么將前一個節(jié)點(diǎn)的 next 指向下一個節(jié)點(diǎn),但是關(guān)于如何實(shí)現(xiàn)代碼,我是不太有思路的。例如如何循環(huán)整個鏈表?我個人覺得 可能是 while (next != null)

#2 看完代碼隨想錄之后的想法? ??

自己對于鏈表的理解還是非常的表層,同時非常不熟練,此處附上 js 中如何刪除元素的代碼:

var removeElements = function(head, val) {

? ? const ret = new ListNode(0, head);

? ? let cur = ret;

? ? console.log(cur)

? ? while(cur.next) {

? ? ? ? console.log(cur, cur.next)

? ? ? ? // if next one is the val, then delete the next one

? ? ? ? if(cur.next.val === val) {

? ? ? ? ? ? cur.next =? cur.next.next;

? ? ? ? ? ? continue;

? ? ? ? }

? ? ? ? // if next one is the val, then delete this one

? ? ? ? cur = cur.next;

? ? }

? ? return ret.next;

};

#3 收獲? ??

鏈表的刪除在對于head的處理上是需要單獨(dú)處理的,通常的做法是在頭部加一個暫時的元素,最后return的時候再刪掉即可。

707.設(shè)計(jì)鏈表?

#1 自己看到題目的第一想法

#2 看完代碼隨想錄之后的想法??

#3 收獲? ?

#4 類似題目??

206.反轉(zhuǎn)鏈表?

#1 自己看到題目的第一想法

#2 看完代碼隨想錄之后的想法? ?

#3 收獲? ??

#4 類似題目?

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

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

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