为什么不能自己做网站,wap网站开发培训,做网站专业的公司,轻骑兵低代码开发平台删除有序数组中的重复项 
给你一个 非严格递增排列 的数组 nums #xff0c;请你 原地 删除重复出现的元素#xff0c;使每个元素 只出现一次 #xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 
考虑 nums 的唯一元素…删除有序数组中的重复项 
给你一个 非严格递增排列 的数组 nums 请你 原地 删除重复出现的元素使每个元素 只出现一次 返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 
考虑 nums 的唯一元素的数量为 k 你需要做以下事情确保你的题解可以被通过 
更改数组 nums 使 nums 的前 k 个元素包含唯一元素并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。 返回 k 。 判题标准: 
系统会用下面的代码来测试你的题解: 
int[] nums  […]; // 输入数组 int[] expectedNums  […]; // 长度正确的期望答案 
int k  removeDuplicates(nums); // 调用 
assert k  expectedNums.length; for (int i  0; i  k; i) { assert nums[i]  expectedNums[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 。不需要考虑数组中超出新长度后面的元素。 
class Solution {
public:int removeDuplicates(vectorint nums) {int left  0 ;for(int right  0;right  nums.size(); right){if(nums[right] ! nums[left]){nums[left]nums[right];}}return left1;}
};删除有序数组中的重复项 II 
给你一个有序数组 nums 请你 原地 删除重复出现的元素使得出现次数超过两次的元素只出现两次 返回删除后数组的新长度。 
不要使用额外的数组空间你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 
说明 
为什么返回数值是整数但输出的答案是数组呢 
请注意输入数组是以「引用」方式传递的这意味着在函数里修改输入数组对于调用者是可见的。 
你可以想象内部操作如下: 
// nums 是以“引用”方式传递的。也就是说不对实参做任何拷贝 int len  removeDuplicates(nums); 
// 在函数里修改输入数组对于调用者是可见的。 // 根据你的函数返回的长度, 它会打印出数组中 该长度范围内 的所有元素。 for (int i  0; i  len; i) { print(nums[i]); } 
示例 1 
输入nums  [1,1,1,2,2,3] 输出5, nums  [1,1,2,2,3] 解释函数应返回新长度 length  5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3。 不需要考虑数组中超出新长度后面的元素。 示例 2 
输入nums  [0,0,1,1,1,1,2,3,3] 输出7, nums  [0,0,1,1,2,3,3] 解释函数应返回新长度 length  7, 并且原数组的前七个元素被修改为 0, 0, 1, 1, 2, 3, 3。不需要考虑数组中超出新长度后面的元素。 
提示 
1  nums.length  3 * 104 -104  nums[i]  104 nums 已按升序排列 
class Solution {
public:int removeDuplicates(vectorint nums) {int size nums.size();if(size  2)return size;int slow  2;int fast  2;while(fast  size){if(nums[slow-2] ! nums[fast] ){nums[slow]  nums[fast];}fast;}return slow;}
};