删除排序链表中的重复元素
给定一个已排序的链表的头 head
, 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。
示例 1:
输入: head = [1,1,2]
输出: [1,2]
示例2:
输入: head = [1,1,2,3,3]
输出: [1,2,3]
解题思路
我们可以初始化一个节点,作为当前节点,用这个节点与下一个节点比较是否相同;如果相同,就令当前节点指向下下一个节点;如果不同就令当前节点指向下一个节点
具体步骤如下:
- 第一步:初试话当前节点等于head
- 第二步: 当当前节点存在且下一个节点存在则进入循环
- 判断当前值与下一个节点的值是否相同
- 相同使当前节点指向下下一个节点
- 不同就让当前节点指向下一个节点
- 第三步: 返回head
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; };
知识点
链表
和数组相似,它们都是有序的列表、都是线性结构(有且仅有一个前驱、有且仅有一个后继)。不同点在于,链表中,数据单位的名称叫做“结点”,而结点和结点的分布,在内存中可以是离散的。
关于链表的一些简单操作和基础知识大家可以看这一片文章:栈,队列和链表三者之间的关系与区别