给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
思路:
链表中删除元素的方法有remove,还有就是链表的指针特性,今天就利用链表的指针特性
1.定义一个变量用于移动元素
2.循环遍历链表,比较相邻两个元素的值,如果相等就让当前节点指针指向下下一个节点,这样那个节点没用指向就会被自动回收。达到了删除的目的。
3.比较完成之后,将节点移动到下一个
代码如下:
var deleteDuplicates = function(head) {
//1.给个变量用于保存当前节点
var current = head
//2.外层while控制循环完整个链表的长度
while(head && head.next){
//内层循环比较当前值和下一个节点值是否相等,相等的话就改变节点指向来删除元素
while(head.next && head.val == head.next.val){
head.next = head.next.next
}
//3.指向下一个节点
head = head.next
}
//4.返回
return current
};