06-删除有序数组中重复数
2026/9/27小于 1 分钟
问题描述
给你一个 非严格递增排列 的数组 nums ,请你 原地删除重复出现的元素,使每个元素只出现一次 ,返回删除后数组的新长度。元素的 相对顺序应该保持一致 。然后返回 nums 中唯一元素的个数。
解决方案
public class DeleteSortArrRepeat {
public static void main(String[] args) {
int[] arr = new int[]{0,1,2,2,3,4,4,5};
System.out.println(arr.length);
System.out.println(deleteRepeat(arr));
}
public static int deleteRepeat(int[] arr){
if(arr.length < 2){
return arr.length;
}
int length = arr.length;
// 提示有序: 这就保证了重复的数值是挨在一起的, pre相当慢指针
int pre = arr[0];
for (int i = 1; i < arr.length;i++){
if(pre == arr[i]){
length--;
}
pre = arr[i];
}
return length;
}
}