https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/
给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
解决方法类似 283. 移动零 MoveZeros
需要注意的是 这是一个已经排好序的数组
public int removeDuplicates(int[] nums) {
if(nums.length<=1){
return nums.length;
}
int right = nums.length - 1;
int dupVal = nums[0];
int dupValIndex = 1;
for (int i = 1; i <= right; i++) {
if (nums[i] == dupVal) {
continue;
}
dupVal=nums[i];
//考虑特殊情况 每个元素都不相等 就不用切换
if (i != dupValIndex) {
swap(nums, dupValIndex, i);
}
dupValIndex++;
}
return dupValIndex;
}
网友评论