LeetCode删除排序链表中的重复元素的问题使用JavaScript解题|前端学算法
highlight: an-old-hope theme: healer-readable
持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情
有人相爱,有人夜里开车看海,我是leetcode第一题都做不出来
这是leetcode的第83题:删除排序链表中的重复元素
删除排序链表中的重复元素
给定一个已排序的链表的头 head
, 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。
示例 1:
输入: head = [1,1,2]
输出: [1,2]
示例2:
输入: head = [1,1,2,3,3]
输出: [1,2,3]
解题思路
我们可以初始化一个节点,作为当前节点,用这个节点与下一个节点比较是否相同;如果相同,就令当前节点指向下下一个节点;如果不同就令当前节点指向下一个节点
具体步骤如下:
- 第一步:初试话当前节点等于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;
};
知识点
链表
和数组相似,它们都是有序的列表、都是线性结构(有且仅有一个前驱、有且仅有一个后继)。不同点在于,链表中,数据单位的名称叫做“结点”,而结点和结点的分布,在内存中可以是离散的。
关于链表的一些简单操作和基础知识大家可以看这一片文章:栈,队列和链表三者之间的关系与区别
「其他文章」