概述
题目
不另外开空间,使得一个排好顺序的有重复元素的数组变成一个前k个是排好序的无重复元素的数组,k表示非重复元素的个数。
思路
- 想要不开设空间 。每发现一个重复元素把整个数组向前移动一位。
- 通过一个快指针,一个慢指针。当快指针和慢指针所指的元素不同时,慢指针的值变成当前快指针的值。
重点在于直接赋值。因为对有效个数之外的数组是没有要求的。
#include <cstdio>
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int n = nums.size();
if(n == 0)return 0;
int i = 0;
for(int j = 1; j < n; j ++)
{
if(nums[i] != nums[j])
{
nums[++i] = nums[j];
}
}
return i + 1;
}
};
最后
以上就是紧张老鼠为你收集整理的双指针游戏(leetcode26)题目思路的全部内容,希望文章能够帮你解决双指针游戏(leetcode26)题目思路所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复