
目录
相关教程:
1.问题描述
给定一个已排序的单链表的头节点 head,要求去除链表中所有重复的元素,重复元素一个不留,并返回新的头节点。
图一:

图二:

输入输出示例:
示例 1:
输入:head = [1,2,3,3,4,4,5]
输出:[1,2,5]
示例 2:
输入:head = [1,1,1,2,3]
输出:[2,3]
2.思路讲解
由于链表已排序,重复元素必然相邻。 我们可以使用一个预先指针 prev 指向 potentially 要保留的节点的前一个节点,curr 指针遍历链表。
如果 curr 与 curr.next 值相同,则移动 curr 直到找到最后一个重复元素,然后将 prev.next 指向 curr.next (即跳过所有重复元素)。 否则,移动 prev 和 curr。
使用哑节点可以简化边界条件的处理。
3.Java 代码实现
public class RemoveDuplicatesFromSortedListII {
// 定义链表节点
static class ListNode {
int val;
ListNode next;
ListNode(int val) {
this.val = val;
}
}
public static ListNode deleteDuplicates(ListNode head) {
/

最低0.47元/天 解锁文章
327

被折叠的 条评论
为什么被折叠?



