快慢指针-leetcode-26
题目描述:
给定一个已经排序好的数组,删除重复的元素,使每个元素只出现一次,并返回新的数组长度。
不要为另一个数组分配额外的空间,必须采用 O(1) 额外内存复杂度的原地算法来解决这个问题。
示例 1:
输入: nums = [1, 1, 2]
输出: length=2, nums=[1,2]
解释: 函数应该返回新的长度2,并且原数组nums的前两个元素被修改为1, 2。 不需要在乎我们返回新数
组的长度,因为答案只是你应该在新的长度范围内输出新数组。
示例 2:
输入: nums = [0,0,1,1,1,2,2,3,3,4]
输出: length=5, nums=[0,1,2,3,4]
解释: 函数应该返回新的长度5、并且原数组nums的前五个元素被修改为0, 1, 2, 3, 和 4。 不能保留超过零
个重复项数字的数组,换句话说,对于nums中的重复项只出现一次的数字,将其不重复地填入新数组。
思路:快慢指针
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public int removeDuplicates(int[] nums) {
int slow = 0;
int fast = 0;
while(fast<nums.length){
if(nums[fast]!=nums[slow]){
slow++;
nums[slow]=nums[fast];
}
fast++;
}
return ++slow;
}
}
//leetcode submit region end(Prohibit modification and deletion)
不恋尘世浮华,不写红尘纷扰