How to remove duplicate numbers that occurred more than twice, but keep the first two occurances

MCO :

So I came across this problem in Java that wants to remove a list of number that has occurred more than twice but keeping the order, and the first two occurrences.

For example, if the list is 2, 3, 5, 4, 5, 2, 4, 3, 5, 2, 4, 4, 2, 10

the expected output would be 2, 3, 5, 4, 5, 2, 4, 3, 10

I've tried several methods, including using a counter int to keep track of the occurrences and filter it out, but I am not sure how I can go about it

class DeDup {
    // function to find the element occurring more than 3 times
    static void get2Occurrences(int arr[]) {
        int i;
        int count = 0;
        for (i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr.length; j++) {
                if (arr[i] == arr[j])
                    count++;
            }
            if (count < 3 && count > 0) {
                //return arr[i];
                System.out.print(arr[i] + ", ");
            } else {
                for (int k = 2; k > 0; k--) {
                    System.out.print(arr[i] + ", ");
                }
            }
        }
    }
    // driver code
    public static void main(String[]args) {
        int arr[] = new int[]{ 2, 3, 5, 4, 5, 2, 4, 3, 5, 2, 4, 4, 2, 10 }; 
        //expected output: 2, 3, 5, 4, 5, 2, 4, 3, 10
        //int n = arr.length;
        get2Occurrences(arr);
    }
}

the expected output would be 2, 3, 5, 4, 5, 2, 4, 3, 10

but i got 2, 2, 3, 3, 5, 5, 4, 4, 5, 5, 2, 2, 4, 4, 3, 3, 5, 5, 2, 2, 4, 4, 4, 4, 2, 2, 10, 10,

Ilya :

In this solution, you can change the number of repetitions from three to another.

int[] arr = new int[]{2, 3, 5, 4, 5, 2, 4, 3, 5, 2, 4, 4, 2, 10};
Map<Integer, Integer> counting = new HashMap<>();
for (Integer current : arr) {
    int count = counting.compute(current, (x, n) -> n == null ? 1 : n + 1);
    if (count < 3) {
        System.out.print(current + ", ");
    }
}

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=117503&siteId=1