每日一题之移除链表元素
移除链表元素
删除链表中等于给定值 val 的所有节点。
示例:
1 | 输入: 1->2->6->3->4->5->6, val = 6 |
解题思路
- 排除null
- 针对表首:如果表首的值等于val,删除:
- 如果元素全部被删除,直接返回null
- 不是就让head等于下一个节点
- 针对表中间部分:
- 记录最后的last节点(方便善后工作)
- 如果当前now节点的值不等于val,说明应该收藏该节点,令
last.next=now
,同时让last变为now
- 针对表尾善后工作:如果是手写算法,这个环节容易被忽略,上一个步骤最后并未将表尾的等于val的节点删除掉,由于我们记录了最后不等于val的节点,所以我们只要让last的下一个节点为空即可
last.next=null
代码
1 | public ListNode removeElements(ListNode head, int val) { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 YD Blog!