给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
eg:nums = [0,0,1,1,1,2,2,3,3,4] 将数组前几位改为[0, 1, 2, 3, 4]并输出5
class Solution {
public static void main(String[] args) {
int[] nums = {1,1,2};
Solution s = new Solution();
System.out.println(s.removeDuplicates(nums));
}
public int removeDuplicates(int[] nums) {
if(nums.length<=1) return nums.length;
int k=0;
for(int i=0;i<nums.length-1;i++){
for(int j=i+1;j<nums.length;j++){
if(nums[j]>nums[i]){
int tmp = nums[j];
nums[j] = nums[i+1];
nums[i+1] = tmp;
break;
}
}
}
for(k=0;k<nums.length-1;k++){
if(nums[k+1]<=nums[k]) break;
}
return k+1;
}
}
本文介绍了一种在原地删除排序数组中重复元素的方法,确保每个元素仅出现一次,并返回处理后数组的新长度。算法在不使用额外数组空间的情况下运行,满足O(1)空间复杂度要求。
775

被折叠的 条评论
为什么被折叠?



