删除有序链表中重复的元素-1
描述
删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次
例如:
给出的链表\(1\to 1\to2\),返回\(1\to2\)
给出的链表为\(1\to 1\to2\to3\to3\),返回\(1\to2\to3\)
数据范围:链表长度满足\(0 \le n \le100\),,链表中任意节点的值满足\(\mid val\mid \le 100\),
进阶:空间复杂度$o(1) \(,时间复杂度\)o(n) $
思路
当链表为空时,直接返回整个链表;当链表不为空时,使用cur
指向头节点:
若cur.next
为空时,返回链表;若不为空时,判断cur
的值是否与cur.next
相同,如果相同,则令cur.next=cur.next.next
,若不相同,cur=cur.next
,指针后移。
代码
class Solution:
def deleteDuplicates(self , head: ListNode) -> ListNode:
# write code here
if not head:
return head
cur = head
while cur.next:
if cur.val == cur.next.val:
cur.next = cur.next.next
else:
cur = cur.next
return head