LeetCode删除排序链表中的重复元素的问题使用JavaScript解题|前端学算法

语言: CN / TW / HK

highlight: an-old-hope theme: healer-readable


持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情

有人相爱,有人夜里开车看海,我是leetcode第一题都做不出来

这是leetcode的第83题:删除排序链表中的重复元素

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

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

示例 1:

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

输出: [1,2]

image.png

示例2:

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

输出: [1,2,3]

解题思路

我们可以初始化一个节点,作为当前节点,用这个节点与下一个节点比较是否相同;如果相同,就令当前节点指向下下一个节点;如果不同就令当前节点指向下一个节点

image.png 具体步骤如下: - 第一步:初试话当前节点等于head - 第二步: 当当前节点存在且下一个节点存在则进入循环 - 判断当前值与下一个节点的值是否相同 - 相同使当前节点指向下下一个节点 - 不同就让当前节点指向下一个节点 - 第三步: 返回head js var deleteDuplicates = function(head) { let current = head while(current && current.next) { if(current.val == current.next.val) { current.next = current.next.next; } else { current = current.next; } } return head; }; image.png

知识点

  • 链表和数组相似,它们都是有序的列表、都是线性结构(有且仅有一个前驱、有且仅有一个后继)。不同点在于,链表中,数据单位的名称叫做“结点”,而结点和结点的分布,在内存中可以是离散的。

image.png

关于链表的一些简单操作和基础知识大家可以看这一片文章:栈,队列和链表三者之间的关系与区别