此方法允許刪除線性列表中的所有底片。我將if循環標記為100%我不理解。因此,此方法遍歷整個列表。其余代碼完全有意義。但是我唯一的問題是為什么會head = n.next在何時prev == null?這是因為現在有兩個“空格”并且不允許這樣做嗎?(兩個空格,因為prev = null和n必須也為null,因為它在if循環中跳轉為負數)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貢獻2016條經驗 獲得超9個贊
首先if
不是循環,而是用于條件分支的語句。
因此,從開始if (n.val < 0)
,您檢查當前元素是否小于零,如果是,則檢查當前元素之前的元素是否為null
。如果是,則意味著您當前的元素是列表的開頭,并且它的值小于零,因此您希望將其刪除。因此,您只需要使列表的開頭成為當前標題之后的元素即可。
因此,目的if (prev == null){
是檢查當前元素(小于零)是否在列表的開頭,以便您知道如何刪除它。
繼續,如果當前元素不是列表的開頭,您將只說前一個元素(相對于當前元素)之后的元素是當前元素之后的元素,因此列表中的零元素不再為零。 。
添加回答
舉報
0/150
提交
取消