给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
思路 :
根据题目得知,数组是有序的,所以我们只需要比较相邻的两个元素即可 类似于冒泡,相邻比较,如果不相等,则放前面
public class Test {
public static void main(String[] args) {
int[] nums={0,0,1,1,1,2,2,3,3,4};
int length = removeDuplicates(nums);
for (int i = 0; i < length; i++) {
System.out.println(nums[i]);
}
}
public static int removeDuplicates(int[] arr){
// 获取数组长度
int length = arr.length;
for (int i = 0; i < length-1; i++) {
// 判断相等
if (arr[i] == arr[i+1]) {
// 长度减一
length--;
// 移位
for (int j = i; j < arr.length-1; j++) {
arr[j] = arr[j+1];
}
// 位移之后 i+1位的值 已经到了i位上,所以接下来还应该在i位进行判断
i--;
}
}
return length;
}
}