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 始终指向链表的头结点