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

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

示例 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
    };
不积跬步无以至千里
原文地址:https://www.cnblogs.com/lyt0207/p/12354696.html