题目要求

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

示例 1:

输入:1->1->2
输出:1->2

示例 2:

输入:1->1->2->3->3
输出:1->2->3

示例3:

输入:[1,1,1,1,1,2,2,2,2,3,3,4,5,6]
输出:[1,2,3,4,5,6]

1.直接法

public class Remove_Duplicates_from_Sorted_List_83 {
    public ListNode deleteDuplicates(ListNode head) {

        ListNode curr = head;

        while(curr != null){
            //要考虑到连续相等的情况,只有不相等的时候当前节点才切换到下一个节点
            if(curr.next !=null && curr.val == curr.next.val){
                curr.next = curr.next.next;
                continue;
            }
            curr = curr.next;
        }

        return head;
    }
}

运行结果:

执行用时 : 2 ms , 在所有 Java 提交中击败了 86.54% 的用户
内存消耗 : 37.3 MB , 在所有 Java 提交中击败了 50.24% 的用户