您的位置:首页 > 汽车 > 时评 > 北京搜索引擎推广系统_自己怎么自学软件开发_广东网站营销seo费用_百度一下百度搜索官网

北京搜索引擎推广系统_自己怎么自学软件开发_广东网站营销seo费用_百度一下百度搜索官网

2024/10/21 6:23:03 来源:https://blog.csdn.net/Theolulu/article/details/143093811  浏览:    关键词:北京搜索引擎推广系统_自己怎么自学软件开发_广东网站营销seo费用_百度一下百度搜索官网
北京搜索引擎推广系统_自己怎么自学软件开发_广东网站营销seo费用_百度一下百度搜索官网

给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。

考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:

  • 更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。
  • 返回 k 。

思路 双指针 (快慢指针)

暴力解法需要开辟一个新的数组空间存储结果,其空间复杂度为O(n),需要遍历一边原数组,所以时间复杂度为O(n)

使用双指针,即快慢指针,慢指针用于将结果填入数组,快指针遍历数组。

因为数组有序,因此慢指针后移条件为快指针的前后两次结果不同。

public class Solution {public int RemoveDuplicates(int[] nums) {int slow = 1, fast = 1;while(fast < nums.Length){if(nums[fast] != nums[fast - 1]){nums[slow] = nums[fast];slow++;}fast++;}return slow;}
}
复杂度分析 
  • 时间复杂度:O(n),其中 n 是数组 nums 的长度。双指针各遍历数组一次。

  • 空间复杂度:O(1)。使用原数组空间。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com