删除排序链表中的重复元素 II
力扣第82题: https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。
示例 1:
输入: 1->2->3->3->4->4->5
输出: 1->2->5
示例 2:
输入: 1->1->1->2->3
输出: 2->3
滑动窗口思想
读完了这道题目,注意一个点,就是只要是重复元素,就要删掉所有,而且链表是排序的,也就是说重复元素肯定是连在一起的。所以我的思路如下:
- 首先定义两个指针,一个指向为重复元素的前一个元素,称为left,这样做的原因是因为如果遍历链表在去判断的话,一旦碰到这一块重复元素,还需要在去遍历一次获取他们的前一个元素,才能将他们去除,所以我直接就定义一个指针。另一个就是left指针的下一个元素,用来寻找重复的元素。
- 定义一个count变量,初始值为0,用来记录是否是重复元素,如果count为0,则不是,否则就是重复元素。
- 因为链表头也可能是重复元素,所以要给链表添加一个边界头.
1 | # 思路有点像滑动指针 |