Problem: 83. 删除排序链表中的重复元素
文章目录
- 思路
- 解题方法
- 复杂度
- Code
思路
遍历
解题方法
- 节点数范围[0, 300] 需要判断节点数是否为0 如果为0则直接返回
- 设置当前节点指针cur,初始化cur=head
- 当cur.next非空时:
判断cur.val 与 cur.next.val 是否相等
如果相等,则需要删除下一个节点,即cur.next=cur.next.next
如果不相等,则将当前指针移动到下一个位置,即cur=cur.next - 返回head节点
复杂度
时间复杂度: O ( n ) O(n) O(n) 遍历一遍链表
空间复杂度: O ( 1 ) O(1) O(1) cur中间变量
Code
# 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: Optional[ListNode]) -> Optional[ListNode]:'''1. 节点数范围[0, 300] 需要判断节点数是否为0 如果为0则直接返回2. 设置当前节点指针cur,初始化cur=head3. 当cur.next非空时:判断cur.val 与 cur.next.val 是否相等如果相等,则需要删除下一个节点,即cur.next=cur.next.next如果不相等,则将当前指针移动到下一个位置,即cur=cur.next4.返回head节点'''if not head: return headcur = headwhile cur.next:if cur.val == cur.next.val:cur.next = cur.next.nextelse:cur = cur.nextreturn head