给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点

示例

示例 1:

输入:head = [1,2,6,3,4,5,6], val = 6
输出:[1,2,3,4,5]
示例 2:

输入:head = [], val = 1
输出:[]
示例 3:

输入:head = [7,7,7,7], val = 7
输出:[]

题解

在链表头部添加一个虚拟节点,遍历链表,判断下一个节点的 val 值,如果等于 val 则将下一个节点指向下下一个节点

  1. /**
  2. * Definition for singly-linked list.
  3. * function ListNode(val, next) {
  4. * this.val = (val===undefined ? 0 : val)
  5. * this.next = (next===undefined ? null : next)
  6. * }
  7. */
  8. /**
  9. * @param {ListNode} head
  10. * @param {number} val
  11. * @return {ListNode}
  12. */
  13. var removeElements = function(head, val) {
  14. const l = new ListNode()
  15. l.next = head
  16. let p = l
  17. while(p && p.next) {
  18. if (p.next.val === val) {
  19. p.next = p.next.next ? p.next.next : null
  20. } else {
  21. p = p.next
  22. }
  23. }
  24. return l.next
  25. };

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-linked-list-elements
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。