为了账号安全,请及时绑定邮箱和手机立即绑定

有人可以解释这个if循环来删除线性列表中的负数吗?

有人可以解释这个if循环来删除线性列表中的负数吗?

翻阅古今 2021-05-06 18:21:19
此方法允许删除线性列表中的所有底片。我将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){是检查当前元素(小于零)是否在列表的开头,以便您知道如何删除它。

继续,如果当前元素不是列表的开头,您将只说前一个元素(相对于当前元素)之后的元素是当前元素之后的元素,因此列表中的零元素不再为零。 。


查看完整回答
反对 回复 2021-05-19
  • 1 回答
  • 0 关注
  • 147 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信