做课件好用的网站,个人 备案 多个网站吗,微信小程序怎么制作免费,合肥建公司网站LeetCode26.删除有序数组中的重复项 1.问题描述2.解题思路3.代码 1.问题描述
给你一个 非严格递增排列 的数组 nums #xff0c;请你 原地 删除重复出现的元素#xff0c;使每个元素 只出现一次 #xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返… LeetCode26.删除有序数组中的重复项 1.问题描述2.解题思路3.代码 1.问题描述
给你一个 非严格递增排列 的数组 nums 请你 原地 删除重复出现的元素使每个元素 只出现一次 返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k 你需要做以下事情确保你的题解可以被通过
更改数组 nums 使 nums 的前 k 个元素包含唯一元素并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。返回 k 。
示例 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 。不需要考虑数组中超出新长度后面的元素。提示
1 nums.length 3 * 104-104 nums[i] 104nums 已按 非严格递增 排列
2.解题思路
双指针法快慢指针法和LeetCode27移除元素方法相同
快指针进行数组遍历慢指针即将被赋值的位置
将目前位置与前一个位置上的数进行对比如果一样就移动指针去下一个位置访问下一个元素。如果不一样赋值给慢指针。慢指针只要目前为止被填充了新值就再向后移动一位。
3.代码
python
class Solution:def removeDuplicates(self, nums: List[int]) - int:# 指针 i 进行数组遍历n len(nums)# 指针 j 指向即将被赋值的位置j 0 #慢指针# 开始对数组进行遍历for i in range(n): # 进行筛选if i 0 or nums[i] ! nums[i - 1] : # 赋值nums[j] nums[i]# j 移动j 1# 获取结果return j C:
class Solution {
public:int removeDuplicates(vectorint nums) {// 指针 i 进行数组遍历int n nums.size();// 指针 j 指向即将被赋值的位置int j 0;// 开始对数组进行遍历for (int i 0 ; i n ; i) {// 进行筛选if ( i 0 || nums[i] ! nums[i - 1]) {// 赋值nums[j] nums[i];// j 移动j;}}// 获取结果return j ;}
};