【LeetCode】26.删除排序数组中的重复项
[LeetCode]26.删除排序数组中的重复项
题目
给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
示例 1
输入: [1,1,2]
输出: 2 #[1, 2]
示例 2
输入: [1, 2, 2, 2, 3]
输出: 3 #[1, 2, 3]
解析
- 难点
- 原地替换,不能使用格外空间
- 算法流程
- 特判 --> 小于2的数组,返回本身
- 指针指向前两位(current, next = 0, 1)
- 遍历比较current 与 next
- current == next : 相邻相同,next = next + 1
- current != next
- 若 next - current > 1: next 与 current 大于1,将next置换current
nums[current + 1] = nums[next]
- next = next + 1
- 若 next - current > 1: next 与 current 大于1,将next置换current
源码
- 解法一
from typing import List
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
if len(nums) <= 1:
return len(nums)
current, next = 0, 1
while next < len(nums):
if nums[current] != nums[next]:
current = current + 1
nums[current] = nums[next] if (next - current) > 0 else nums[current]
next = next + 1
pass
return current + 1
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗