网站备案如何查询,杭州seo服务公司,酒店网站建设范文,wordpress qq空间主题目录 问题描述判题标准示例提示 具体思路思路一思路二 代码实现 问题描述 给你一个非严格递增排列的数组nums#xff0c;请你原地删除重复出现的元素#xff0c;使每个元素只出现一次#xff0c;返回删除后数组的新长度。元素的相对顺序应该保持一致 。然后返回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.length 3 * 1 0 4 10^4 104 − 1 0 4 -10^4 −104 nums[i] 1 0 4 10^4 104 nums 已按非严格递增排列
具体思路
思路一 重新额外开辟一个数组存放修改过的元素。使用src1src2和dst指针如果src1与src2所指向的内容相等时那么就src如果当src1与src2不相等时就将a数组中src1中的内容赋值到tmp数组的dst中让后dst然后将src2赋值给src1最后src2。
思路二 不需要额外开数组的方法。在一个数组中使用src和dst两个指针当src和dst不相等时那么就dst然后将数组a中的src的内容赋值到a数组中的dst中最后在src如果当src和dst相等的时候那么就直接src。
代码实现
//思路2
int removeDuplicates(int* nums, int numsSize) {int src 1, dst 0;while(src numsSize){if(nums[src] ! nums[dst]){nums[dst] nums[src];}else{src;}}return dst1;
}