83. 删除排序链表中的重复元素
1.题目
2.我的解决方案
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def deleteDuplicates(self, head: ListNode) -> ListNode:
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
- 时间复杂度: O ( n ) O(n) O(n)
- 空间复杂度: O ( 1 ) O(1) O(1)
- 和同类型的区别是:这个是cur本身和cur.next进行比较,另一个是cur.next和cur.next.next进行比较,所以只需要用一个while就可以了