此方法允許刪除線性列表中的所有底片。我將if循環(huán)標(biāo)記為100%我不理解。因此,此方法遍歷整個列表。其余代碼完全有意義。但是我唯一的問題是為什么會head = n.next在何時prev == null?這是因為現(xiàn)在有兩個“空格”并且不允許這樣做嗎?(兩個空格,因為prev = null和n必須也為null,因為它在if循環(huán)中跳轉(zhuǎn)為負(fù)數(shù))ListNode prev = null; ListNode n = head; while (n != null) { if (n.val < 0) { if (prev == null) { //this if- loop i don′t understand head = n.next; } else { prev.next = n.next; } } else { prev=n; n = n.next; } }
1 回答

慕沐林林
TA貢獻(xiàn)2016條經(jīng)驗 獲得超9個贊
首先if
不是循環(huán),而是用于條件分支的語句。
因此,從開始if (n.val < 0)
,您檢查當(dāng)前元素是否小于零,如果是,則檢查當(dāng)前元素之前的元素是否為null
。如果是,則意味著您當(dāng)前的元素是列表的開頭,并且它的值小于零,因此您希望將其刪除。因此,您只需要使列表的開頭成為當(dāng)前標(biāo)題之后的元素即可。
因此,目的if (prev == null){
是檢查當(dāng)前元素(小于零)是否在列表的開頭,以便您知道如何刪除它。
繼續(xù),如果當(dāng)前元素不是列表的開頭,您將只說前一個元素(相對于當(dāng)前元素)之后的元素是當(dāng)前元素之后的元素,因此列表中的零元素不再為零。 。
添加回答
舉報
0/150
提交
取消