给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
作者:力扣 (LeetCode)
链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x2gy9m/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
package day02;
/*
给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
思路:定义数组长度 len = 0; 然后扫描数组,不断的将不重复的往前覆盖,len ++
*/
public class RemoveDuplicateArray {
public static void main(String[] args) {
//测试
int [] numbers = {0,0,1,1,1,2,2,3,3,4};
int len = removeDuplicateArray(numbers);
System.out.println(len);
print(numbers,len);
}
//返回数组的长度,根据长度输出数组的内容
public static int removeDuplicateArray(int [] numbers) {
if(numbers.length == 0 || numbers == null){
return 0;
}
if( numbers.length == 1 ){
return 1;
}
int len = 0;
numbers[len] = numbers[0];
for(int i = 1; i < numbers.length; i++){
if(numbers[i] == numbers[len]){
continue;
} else {
len += 1;
numbers[len] = numbers[i];
}
}
return len + 1;//下标从0开始,返回长度 + 1
}
public static void print(int [] numbers, int len) {
for(int i = 0; i < len; i++){
System.out.print(numbers[i] + " ");
}
}
}