Java删除数组中的重复元素
我们可以通过两种方式删除数组中的重复元素: 使用临时数组或使用单独的索引。要从数组中删除重复的元素,数组必须按排序顺序。如果数组未排序,则可以通过调用
Arrays.sort(arr)方法对其进行排序。
1)使用临时数组
<删除数组中的重复元素< h2>
public class RemoveDuplicateInArrayExample{
public static int removeDuplicateElements(int arr[], int n){
if (n==0 || n==1){
return n;
}
int[] temp = new int[n];
int j = 0;
for (int i=0;i<n-1;i++){
if (arr[i] != arr[i+1]){
temp[j++] = arr[i];
}
}
temp[j++] = arr[n-1];
// Changing original array for (int i=0;i<j;i++){
arr[i] = temp[i];
}
return j;
}
public static void main (String[] args) {
int arr[] = {10,20,20,30,30,40,50,50};
int length = arr.length;
length = removeDuplicateElements(arr, length);
//printing array elements for (int i=0;i<length;i++) System.out.print(arr[i]+" ");
}
}
输出:
2)使用单独的索引删除数组中的重复元素
public class RemoveDuplicateInArrayExample2{
public static int removeDuplicateElements(int arr[], int n){
if (n==0 || n==1){
return n;
}
int j = 0;
//for next element for (int i=0;i <n-1;i++){
if (arr[i] != arr[i+1]){
arr[j++] = arr[i];
}
}
arr[j++] = arr[n-1];
return j;
}
public static void main (String[] args) {
int arr[] = {10,20,20,30,30,40,50,50};
int length = arr.length;
length = removeDuplicateElements(arr, length);
//printing array elements for (int i=0;i<length;i++) System.out.print(arr[i]+" ");
}
}
输出:
删除未排序数组中的重复元素
如果您有未排序数组,则需要先对其进行排序。为此,请使用Arrays.sort(arr)方法。
import java.util.Arrays;
public class RemoveDuplicateInArrayExample3{
public static int removeDuplicateElements(int arr[], int n){
if (n==0 || n==1){
return n;
}
int[] temp = new int[n];
int j = 0;
for (int i=0;i<n-1;i++){
if (arr[i] != arr[i+1]){
temp[j++] = arr[i];
}
}
temp[j++] = arr[n-1];
// Changing original array for (int i=0;i<j;i++){
arr[i] = temp[i];
}
return j;
}
public static void main (String[] args) {
int arr[] = {10,70,30,90,20,20,30,40,70,50};
//unsorted array Arrays.sort(arr);
//sorting array int length = arr.length;
length = removeDuplicateElements(arr, length);
//printing array elements for (int i=0;i<length;i++) System.out.print(arr[i]+" ");
}
}
输出:
删除数组中的重复元素<>