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

2020-11-10  本文已影响0人  422ccfa02512

题目

难度级别:简单

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

示例 1:

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

示例 2:

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

解题思路

法一

通过创建新链表,初始化99999999作为哨兵节点,当新链表当前值与head当前值不相等时,将prev前移。

const deleteDuplicates = function(head) {
    let l = new ListNode(99999999) 
    let prev = l

    while(head != null) {
        if (head.val != prev.val) {
            prev.next = head       
            prev = prev.next
        }else {
            prev.next = null
        }

        head = head.next
    }

    return l.next
};

法二

遍历head,若他的当前项的值与下一项的值相等,则删除下一项的值,prev前移。

const deleteDuplicates = function(head) {
    let prev = head

    while(prev && prev.next) {
        if (prev.val === prev.next.val) {
            prev.next = prev.next.next
        }else {
            prev = prev.next
        }
    }

    return head
};

题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list

上一篇下一篇

猜你喜欢

热点阅读