快手小程序推广赚钱,怎么优化一个网站关键词,什么网站可以接单做,网站建设主题怎么定给你一个 非严格递增排列 的数组 nums #xff0c;请你原地删除重复出现的元素#xff0c;使每个元素 只出现一次 #xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。
考虑 nums 的唯一元素的数量为 k #xff0c;你需…给你一个 非严格递增排列 的数组 nums 请你原地删除重复出现的元素使每个元素 只出现一次 返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。
考虑 nums 的唯一元素的数量为 k 你需要做以下事情确保你的题解可以被通过 更改数组 nums 使 nums 的前 k 个元素包含唯一元素并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。 返回 k 。
解【因为首项肯定保留所以从第二项开始进行双指针】
class Solution {public int removeDuplicates(int[] nums) {int slow 1;for (int fast 1; fast nums.length - 1; fast ) {if (nums[fast] ! nums[fast - 1]) {nums[slow] nums[fast];}}return slow;}
} 另有解如下
class Solution {
public:int removeDuplicates(vectorint nums) {if (nums.empty()) return 0; // 别忘记空数组的判断int slowIndex 0;for (int fastIndex 0; fastIndex (nums.size() - 1); fastIndex){if(nums[fastIndex] ! nums[fastIndex 1]) { // 发现和后一个不相同nums[slowIndex] nums[fastIndex 1]; //slowIndex 0 的数据一定是不重复的所以直接 slowIndex}}return slowIndex 1; //别忘了slowIndex是从0开始的所以返回slowIndex 1}
};