删除数组重复元素
程序员文章站
2024-03-16 13:03:22
...
删除数组中的重复元素
给定有序数组,要求在不使用额外空间的前提下删除其中的重复元素
public static void main(String[] args) {
int[] arr = {1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 5, 5};
int count = removeDuplicates2(arr);
int[] ints = Arrays.copyOf(arr, arr.length - count);
System.out.println(arr.length - count+","+Arrays.toString(ints));
}
private static int removeDuplicates(int[] arr) {
if (arr == null && arr.length == 0)
return 0;
int left = 0;
int count = 0;
for (int right = 0; right < arr.length; right++) {
if (arr[left] == arr[right]) {
//如果左指针和右指针指向的值一样,说明有重复的,这时左指针不动右指针向右移动
count++;
} else {
//如果不相等,左指针向右移动,并把右指针的值赋给左指针
arr[++left] = arr[right];
}
}
return count;
}
方法2
private static int removeDuplicates2(int[] arr) {
if (arr == null && arr.length == 0)
return 0;
int count = 0;
for (int right = 1; right < arr.length; right++) {
if (arr[right] == arr[right-1]) {
//如果左、右指针指向的两数相等,count++
count++;
} else {
arr[right-count] = arr[right];
}
}
return count;
}
推荐阅读
-
两个有序数组合并找第k个元素
-
两个排序数组找第k小元素(k为中值)的思想
-
删除数组重复元素
-
删除排序数组中的重复项
-
python pandas 判断表是不是有空的元素 isna()方法 isnull() 方法 区别 删除空值 插值空值 填充空值 处理
-
JS 对象数组的元素删除,比较对象数组,删除重复对象 JavaScriptJ#HTML
-
JS 对象数组的元素删除,比较对象数组,删除重复对象 JavaScriptJ#HTML
-
[二分法]leetcode1157:子数组中占绝大多数的元素(hard)
-
给定一个非空的整数数组,返回其中出现频率前 k 高的元素。要求时间复杂度优于O(nlogn)
-
LeetCode算法题解:一个无序数组排序后的任意两个相邻元素的最大差值