千家信息网

LeetCode如何删除排序数组中的重复项

发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,这篇文章主要介绍了LeetCode如何删除排序数组中的重复项,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1题目描述给定一个排序数组,
千家信息网最后更新 2024年11月24日LeetCode如何删除排序数组中的重复项

这篇文章主要介绍了LeetCode如何删除排序数组中的重复项,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

1

题目描述

给定一个排序数组,你需要在原地删除重复出现的元素,在不使用额外数组空间下,使得每个元素只出现一次,返回移除后数组的新长度。如输入[1,1,2],返回2。

2

题解

题目要求原地删除重复的数字,且不使用额外数组空间,因此要注意删除重复元素后原始数组长度变化带来的影响。
思路:双指针
两个指针分别指向当前查找的数字和后面与之相同的数字。当后面的数字与当前查找数字相同,则把后面的数字删除,否则指向下一个查找数字。因为数组是有序排列的,因此不需要把当前查找数字之后的值全部遍历,只要发现第一个与之不同的值,则可完成此轮查找。
class Solution:    def removeDuplicates(self, nums: List[int]) -> int:        if len(nums)==0:            return         tmp = nums[0]        i=1        while i < len(nums):            if nums[i] == tmp:                #删除列表中某位置的值                nums.pop(i)            else:                tmp = nums[i]                i+=1
上述代码是从前向后查找,也可考虑从后向前查找。在遇到有序列表查找问题时,要建立 双指针 和 查找方向 的思维反射。

感谢你能够认真阅读完这篇文章,希望小编分享的"LeetCode如何删除排序数组中的重复项"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

0