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

https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/description/

因为链表已经排好顺序,所以我们可以通过比较两个元素是否相等,来判断是否要删除这两个中的一个,如果不删除的话,就要比较下一个的两个值。还是使用遍历和递归

1.使用遍历,出循环的条件应该是至少存在2个元素(head和head.next),

class solution{

    public ListNode deleteDuplicated(ListNode head){

        ListNode temp = head;

        while( temp != null && temp.next != null){

            if(temp.next.val == temp.val){

                //删除了temp.next

                temp.next = temp.next.next; 

            }

            else temp = temp.next;

         }

        return head;

    }

}

2.使用递归,使用了一个三元符,[boolean ? a : b] 真值返回 a,假值就返回b

class solution{

    public ListNode deleteDuplicates(ListNode head){

        if(head == null || head.next == null)  return head;

        //和反转链表中的不同,感觉有可能是因为反转时候会改变head的朝向,所以才新建了一个ListNode使用递归func(head.next),要是不改变的话,就可以直接head.next = func(head.next),暂时是这样理解的,看看多做做题会不会找到规律吧

        head.next = deleteDuplicates(head.next);

        return head.next.val == head.val ? head.next : head;

    }

}      

你可能感兴趣的:(删除排序链表中的重复元素)