做公司网站需要注意什么,网络推广团队分工,一个人开淘宝店容易吗,网络营销推广渠道都有哪些方面26. 删除有序数组中的重复项(remove-duplicates-from-sorted-array) 
给你一个 非严格递增排列 的数组 nums #xff0c;请你** 原地** 删除重复出现的元素#xff0c;使每个元素 只出现一次 #xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 …26. 删除有序数组中的重复项(remove-duplicates-from-sorted-array) 
给你一个 非严格递增排列 的数组 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 。不需要考虑数组中超出新长度后面的元素。提示 
1  nums.length  3 * 10^4-10^4  nums[i]  10^4nums 已按 非严格递增 排列 
首先注意数组是有序的那么重复的元素一定会相邻。 
要求删除重复元素实际上就是将不重复的元素移到数组的左侧。 
考虑用 2 个指针一个在前记作 p一个在后记作 q算法流程如下 
1.比较 p 和 q 位置的元素是否相等。 
如果相等q 后移 1 位 如果不相等将 q 位置的元素复制到 p1 位置上p 后移一位q 后移 1 位 重复上述过程直到 q 等于数组长度。 
返回 p  1即为新数组长度。 
pq0011122334 
java代码 public int removeDuplicates(int[] nums) {if(nums  null || nums.length  0) return 0;int p  0;int q  1;while(q  nums.length){if(nums[p] ! nums[q]){nums[p  1]  nums[q];p;}q;}return p  1;
}golang代码 
func removeDuplicates(nums []int) int {n : len(nums)if n  0 {return 0}slow : 1for fast : 1;fast  n;fast {if nums[fast] ! nums[fast-1] {nums[slow]  nums[fast]slow}}return slow
}