[路飞]_删除排序链表中的重复元素

236 阅读1分钟

「这是我参与11月更文挑战的第7天,活动详情查看:2021最后一次更文挑战

题目描述

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

示例 1:

image.png

输入:head = [1,1,2] 输出:[1,2]

力扣(LeetCode)链接:leetcode-cn.com/problems/re…

解题思路

  1. 链表为有序链表,相同节点是连续的
  2. 遍历链表,当前节点的值和下个节点的值相等时,修改当前节点的 next 为下个节点的 next
  3. 处理边界条件,head 为空时返回 head

代码实现

var deleteDuplicates = function(head) {
    if (!head) return head

    let curr = head
    while(curr.next) {
        if (curr.val === curr.next.val) {
            //如果当前节点和下个节点的值相同,则删除下个节点
            curr.next = curr.next.next
        } else {
            curr = curr.next
        }
    }

    return head
};

如有错误欢迎指出,欢迎一起讨论!