Skip to content

删除排序链表中的重复元素

LeetCode-83

存在一个按升序排列的链表,给你这个链表的头节点 head,请你删除所有重复的元素,使每个元素只出现一次,返回同样按升序排列的结果链表

js
var deleteDuplicates = function(head) {
  // 用于记录是否前边遍历出现过
  let arr = []
// 虚拟头节点,next指向head
  let dummyHead = new ListNode()
  dummyHead.next = head
  // 定义一个前置指针(dummyHead用于return的时候返回头节点)
  let pre = dummyHead
  while(head) {
    // 如果出现过,pre指向head的下一个节点(跳过该节点)
    if(arr.includes(head.val)) {
      pre.next = head.next
    } else {
    // 没出现过就继续往前走
      pre = pre.next
    }
    // 存储已遍历的节点信息
    arr.push(head.val)
    // head一直往前走
    head = head.next
  }
  return dummyHead.next
}