83-Remove-Duplicates-from-Sorted-List
Last updated
Was this helpful?
Last updated
Was this helpful?
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
测试用例:
示例 1: 输入: 1->1->2 输出: 1->2
示例 2: 输入: 1->1->2->3->3 输出: 1->2->3 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5.
这道题也是使用双指针fast与slow,如果fast与slow指向的元素不同,那么就更新slow为fast。如果指向的元素相同,说明我们遇到了相同元素了,只需保留重读元素中的第一个。所以slow不动,直到二者指向的元素再次不相同,然后直接删除slow与fast之间的节点并更新slow。
这里有一个值得注意的点:就是如果末尾出现相同元素,上面的操作的是不会执行最后依次删除的,需要手动额外删除一次。比如 1->2->3->3->3,这里slow指向左边第一个3,fast指向null,循环已经结束。
看到了把,又是双指针的思路,双指针在数组和链表里都挺好用的啊。