如何删除有序数组中的重复项
发表于:2025-01-26 作者:千家信息网编辑
千家信息网最后更新 2025年01月26日,这篇文章将为大家详细讲解有关如何删除有序数组中的重复项,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。题目给你一个有序数组 nums ,请你 原地 删除
千家信息网最后更新 2025年01月26日如何删除有序数组中的重复项
这篇文章将为大家详细讲解有关如何删除有序数组中的重复项,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
题目
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成
说明
为什么返回数值是整数,但输出的答案是数组呢?
请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。
你可以想象内部操作如下:
// nums 是以"引用"方式传递的。也就是说,不对实参做任何拷贝int len = removeDuplicates(nums);// 在函数里修改输入数组对于调用者是可见的。// 根据你的函数返回的长度, 它会打印出数组中 该长度范围内 的所有元素。for (int i = 0; i < len; i++) { print(nums[i]);}
示例 1:
输入:nums = [1,1,2]输出:2, nums = [1,2]解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2 。不需要考虑数组中超出新长度后面的元素。
示例 2:
输入:nums = [0,0,1,1,1,2,2,3,3,4]输出:5, nums = [0,1,2,3,4]解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4 。不需要考虑数组中超出新长度后面的元素。
提示:
0 <= nums.length <= 3 * 104-104 <= nums[i] <= 104nums 已按升序排列
正确答案
def test(nums: List[int])->int:# 左指针 ii = 0 lens = len(nums)# 右指针 jfor j in range(1,lens):# 如果不相等,则将左指针后移一位,并且赋值右指针的值if nums[i] != nums[j]: i +=1nums[i]=nums[j]# 如果左右指针的值相同,证明有重复的值,不做任何操作,右指针后移一位,左指针不动# 最终数组的长度就是左指针的位置+1return i+1
解题思路:双指针
首先注意数组是有序的,那么重复的元素一定会相邻
要求删除重复元素,实际上就是将不重复的元素移到数组的左侧
使用双指针思路,左指针记作 i 也叫慢指针,右指针记作 j 也叫快指针
快指针顾名思义,走的更快,所以循环以它为基准
算法流程如下:
比较 i 和 j 位置的元素是否相等
如果相等,j 后移 1 位,i 不需要动
如果不相等,i 后移 1 位,然后将 j 位置的值赋值到 i 新位置上,j 继续后移一位(其实就是循环+1)
重复上述过程,直到 j 指向数组最后一个元素
返回 i + 1,即为新数组长度
复杂度分析
时间复杂度:O(n),假设数组的长度是 n,那么 i 和 j 分别最多遍历 n 步
空间复杂度:O(1)
关于如何删除有序数组中的重复项就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
数组
指针
元素
长度
输入
函数
后移
有序
位置
复杂
复杂度
就是
空间
输出
内容
原地
思路
文章
方式
更多
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
逃离塔科夫俄版可以选哪些服务器
安庆证券软件开发外包
网页管理mc服务器
网络安全 会议记录
网络安全手抄报大全一年级
我的世界服务器管理员刷物品
驻马店互联网科技公司
山东同方服务器购买
全力推进网络安全执法检查
数据库数据类型数据是什么
宁波镇海区服务器硬盘
sql数据库密码不够复杂
鄞州游戏软件开发管理
广州小程序软件开发服务费
软件开发 应用层软件开发
服务器无法完成你的请求
公需课程网络安全学习心得
科学引文索引数据库检索报告
网站后台数据库被改
珠海市万物互联网络科技有限公司
网络安全行业什么专业好
思捷软件开发
崇明区提供数据库系统商家
驻马店互联网科技公司
吉图软件开发有限公司
找朋友一起玩哪个服务器好
凯文乐福生涯数据库
数据库的应用开发
支付宝中国网络技术有限公司打款
服务器网站打开慢