leetcode203链表节点待删除待问题?
来源:2-1 Leetcode中和链表相关的问题
_风中叶
2020-12-30 11:38:19
老师,leetcode203的问题,我的18行没有将delNode.next置空而是将delNode置空也是可以通过提交的。
我理解的是我的 头节点都已经指向头节点的下一条节点了,直接将delNode置空就可以了,为什么delNode还要next一下再去置空,会不会有一点多余?
1回答
首先,这句话不写是没有关系的。写这句话可以帮助 GC 更快地回收删除节点。
其次,如果你想让 delNode 和链表断开,逻辑应该是 delNode->next = null。delNode = null 没有对原链表作改变。
比如,delNode 指向节点 2 的话:
1 -> 2 -> 3 -> 4 -> 5 -> null
^
|
delNode
运行 delNode = null 的结果,只不过让 delNode 指向了 null,没有让 2 和链表断开。
1 -> 2 -> 3 -> 4 -> 5 -> null
delNode -> null
而 delNode.next = null,因为 delNode 指向节点 2,才真的将 2.next 指向 null,才让 2 和整个链表断开:
1 -> 2 -> null (XXX 断开了) 3 -> 4 -> 5 -> null
^
|
delNode
对此,你可以再看一遍 1-5 的动画演示;
另外,这个问题其实和我在 2-9 讲的问题有相似之处,届时你也可以再仔细体会一下。
继续加油!:)
相似问题