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

# 题目

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

返回同样按升序排列的结果链表

# 题解

# 遍历

// 简洁版
var deleteDuplicates = function(head) {
  var x = head;
  while (x != null) {
    if (x.next == null) break;
    if (x.val == x.next.val) {
      x.next = x.next.next;
    } else {
      x = x.next;
    }
  }
  return head;
};

// 理解版
var deleteDuplicates = function(head) {
  if (!head) return head;
  let preHead = new ListNode(0);
  preHead.next = head;
  let pre = head;
  let cur = head.next;
  while (cur) {
    if (cur.val !== pre.val) {
      pre = pre.next;
      cur = cur.next;
    } else {
      pre.next = cur.next;
      cur = pre.next;
    }
  }
  return preHead.next;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32