Skip to content

Latest commit

 

History

History
71 lines (52 loc) · 1.24 KB

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

File metadata and controls

71 lines (52 loc) · 1.24 KB

难度:简单

类型:链表

题目:

给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。

示例 1:

输入: 1->1->2
输出: 1->2

示例 2:

输入: 1->1->2->3->3
输出: 1->2->3

思路:

由于是有序链表,只需要对比链表前后两个结点。

  • 如果重复,就需要将当前结点指向 下一个结点的下一个结点,这样就跳过了中间这个结点,于是中间这个结点就被删除了。
cur.next = cur.next.next
  • 如果不重复,则cur需要向前移动一个结点。
  • 最终返回head。

实现:

javascript:

/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
var deleteDuplicates = function(head) {
    // 得到初始节点
    var cur = head

    while (cur && cur.next) {
        // 重复
        if (cur.val === cur.next.val) {
            cur.next = cur.next.next
        } else { // 不重复
            cur = cur.next
        }
    }

    return head
}