移除链表元素
移除链表元素
https://leetcode.cn/problems/remove-linked-list-elements/description/
逻辑:分情况讨论
如果cur.next.val == val 让cur的next指向cur.next.next 否则cur = cur.next
- 情况1:链表头部元素和val相同
- 情况2:链表非头部元素和val相同
两种情况统一的方法:在链表头部加一个虚拟节点,从虚拟节点开始,每次对当前节点的 next 元素进行判断。即可统一两种情况
如果cur.next.val == val 让cur的next指向cur.next.next 否则cur = cur.next
1 | var removeElements = function(head, val) { |
我抽象的将这个过程想象为一个继承的过程,如果cur.next.val == val
,那么它没有继承cur
的资格,直接找cur.next.next
过来进行资格审查。如果通过继承cur
。每一代cur
都要找继承人,直到最后没人可选。