[83][简单][双指针][DFS] 删除排序链表中的重复元素
题目描述
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
示例 2:
解题思路
双指针
一个很明显的思路是双指针. 从head节点开始, 使用两个指针left
和right
, 如果两个指针对应节点的值相等, 则将right
指针一直右移, 直到right
指向的节点的值与left
节点的值不同.
然后将left
指向right
即可. 再将left
移至right
, 重复上述过程, 直到left
指向尾节点后的None.
由于head节点不会被删掉, 经过上述过程后, 直接返回原来的head节点即可.
DFS
从递归的角度来看, 就是从head节点开始, 找到它的下一个节点, 然后指向它. 当前节点的下一个节点有两种情况:
后面的节点与其值不相等, 则下一个节点还是原来的节点
如果相等, 则可以一直跳过, 直到遇到不相等的节点, 就是下一个节点
对应的代码如下:
最后更新于