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

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

LeetCode-83-删除排序链表中的重复元素_第1张图片

LeetCode-83-删除排序链表中的重复元素_第2张图片

1.1因为链表原本就是有顺序的,所以只有相邻的两节点的值可能相等,所以只需比较相邻结点。如果相邻结点值相等,则当前结点指向下一结点的下一结点,即删除相同值的结点

public ListNode deleteDuplicates(ListNode head) {
        if(head == null){
            return head;
        }
        ListNode currentNode = head;
        while(null != currentNode.next){
            if(currentNode.next.val == currentNode.val){
                currentNode.next = currentNode.next.next;
            }else{
                currentNode = currentNode.next;
            }
        }
        return head;
    }

1.2递归:时间复杂度与上一致,但空间复杂度较大。

public ListNode deleteDuplicates(ListNode head) {
        if(head ==null || head.next == null) return head;
        head.next = deleteDuplicates(head.next);
        return head.val == head.next.val ? head.next : head;
    }

你可能感兴趣的:(LeetCode题库,数据结构,leetcode,算法)