题解 | #删除有序链表中重复的元素-I#
删除有序链表中重复的元素-I
https://www.nowcoder.com/practice/c087914fae584da886a0091e877f2c79
def deleteDuplicates(self , head ): # write code here pre = None cur = head while cur and cur.next: pre = cur cur = cur.next while cur and pre.val == cur.val: t = pre.val while cur and cur.val == t: cur = cur.next pre.next = cur return head
这道题是简单版本的删除有序链表的重复元素,我们不需要考虑头结点是否会被删除,因为第一个节点可以被永远保留
故,需要两个结点,pre是(当前遍历过的元素)最后一个节点,cur用于确认现在将要被连接的节点。
1、初始pre = None, cur = head
2、判断cur和cur.next是否存在(由于后续需要cur=cur.next,故需要在此判断)
3、pre = cur,保存当前待连接节点的前一个节点,cur=cur.next开始遍历
4、while循环进行寻找,确认当前cur和pre情况下待删除的节点值,用t保存目前pre.val的值,便于后续节点值的比较;
5、while循环遍历,通过cur来找到目前不等于t的节点
6、连接cur到pre.next
7、头节点没有被删除,return head