leetcode-83 删除排序链表中的重复元素(RemoveDuplicatesFromSortedList)-java

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

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


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

边界值判断:

head == null //空链表,无重复,不需要操作,返回null即head

head.next == null //只有一个节点的链表,无重复,返回head

变量注释:

node //循环变量,出初始值为head

解题思路:

第一个节点head不发生重复

从前往后遍历,循环条件:node.next != null

(1)如果下一个节点元素 与 当前节点元素 发生重复,将重复的 下一个节点 移出链表;

node.next = node.next.next; //node.next  指向 重复的节点 的下一个节点,移除重复的节点。

(2)如果没有重复,继续往后遍历node= node.next;

最后返回head  // 上面的操作全部在node上,head 始终指向链表的头结点

leetcode-83 删除排序链表中的重复元素(RemoveDuplicatesFromSortedList)-java