题目描述
描述转载自《83. 删除排序链表中的重复元素》
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例1
输入: 1->1->2
输出: 1->2
示例2
输入: 1->1->2->3->3
输出: 1->2->3
解题思路
- 因为有可能头结点会被删除,所以定义一个哑结点 dummy,连接头节点的前面;
- 因为是有序链表,所以重复元素只会相邻;
- 定义 cur 指针指向 dummy,如果 cur.next 与 cur.next.next 值相同,说明它们两个重复了,删除 cur.next 节点,也就是 cur.next = cur.next.next;
- 如果 cur.next 与 cur.next.next 值不同,那就说明当前 cur.next 的值没有重复元素,cur = cur.next。
Java代码实现
class Solution { public ListNode deleteDuplicates(ListNode head) { ListNode dummy = new ListNode(Integer.MAX_VALUE); dummy.next = head; ListNode cur = dummy; while (cur.next != null && cur.next.next != null) { if (cur.next.val == cur.next.next.val) { cur.next = cur.next.next; } else { cur = cur.next; } } return dummy.next; } }