I tried to delete the duplicate value and print the count of each element. But I didn’t get the correct answer. How to delete only the duplicate value and print the count? Here is my code
JavaScript
x
public class RemoveArray {
public static int[] delete(int[] arr, int x) {
int[] sarr = new int[arr.length - 1];
int j = x;
for (int i = 0, k = 0; i < arr.length; i++) {
if (i != j) {
sarr[k] = arr[i];
k++;
}
}
return sarr;
}
public static void main(String args) {
int[] arr = { 1, 2, 8, 3, 2, 2, 2, 1 };
for (int i = 0; i < arr.length; i++) {
int count = 1;
for (int j = i + 1; j < arr.length; j++) {
if (arr[i] == arr[j]) {
int x = j;
count++;
arr = delete(arr, x);
}
}
System.out.println(count);
}
}
}
I need output as
JavaScript
2
4
1
1
Advertisement
Answer
The problem is that you are removing an element and not updating j accoridngly.
To fix your code, try this:
JavaScript
import java.util.Arrays;
public class removearray {
static int[] delete(int arr[], int x) {
int sarr[] = new int[arr.length - 1];
int j = x;
for (int i = 0, k = 0; i < arr.length; i++) {
if (i != j) {
sarr[k] = arr[i];
k++;
}
}
return sarr;
}
public static void main(String[] args) {
int arr[] = new int[] { 1, 2, 8, 3, 2, 2, 2, 1 };
for (int i = 0; i < arr.length; i++) {
int count = 1;
for (int j = i + 1; j < arr.length; j++) {
if (arr[i] == arr[j]) {
int x = j;
count = count + 1;
arr = delete(arr, x);
j--;
}
}
System.out.println(count);
}
}
}