此方法允许删除线性列表中的所有底片。我将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 回答
![?](http://img1.sycdn.imooc.com/545865470001bf9402200220-100-100.jpg)
慕沐林林
TA贡献2016条经验 获得超9个赞
首先if
不是循环,而是用于条件分支的语句。
因此,从开始if (n.val < 0)
,您检查当前元素是否小于零,如果是,则检查当前元素之前的元素是否为null
。如果是,则意味着您当前的元素是列表的开头,并且它的值小于零,因此您希望将其删除。因此,您只需要使列表的开头成为当前标题之后的元素即可。
因此,目的if (prev == null){
是检查当前元素(小于零)是否在列表的开头,以便您知道如何删除它。
继续,如果当前元素不是列表的开头,您将只说前一个元素(相对于当前元素)之后的元素是当前元素之后的元素,因此列表中的零元素不再为零。 。
添加回答
举报
0/150
提交
取消