import java.util.HashMap;
import java.util.Map;
class Main {
public static int minOperationsToDestroyArray(int[] arr) {
Map
<Integer, Integer
> freqMap
= new HashMap
<>(); for (int num : arr){
freqMap.put(num, freqMap.getOrDefault(num, 0) + 1);
}
int minOperations = 0;
for ( Map.
Entry<Integer, Integer
> entry
: freqMap.
entrySet()) { int freq = entry.getValue();
if (freq == 1) {
return -1;
} else {
//we can consume 2 or 3 elements in one operation
// for min .. see how many 3's can be removed
// remainder can be 1 or 2 or 0 if 0 no extra operation
// if remainder is 1 it means that it can be coupled with a 3 to form 4 thats 2 + 2 .. thats 2 operations now
// remainder 2 then add 1 or if 1 then also add 1 .. thats the meaning of freq % 3 != 0 ? 1 : 0
minOperations += freq / 3 + (freq % 3 != 0 ? 1 : 0);
}
}
return minOperations;
}
public static void main
(String[] args
) { int[] arr = {1, 5, 5, 1, 1, 8, 8, 10, 10};
int minOps = minOperationsToDestroyArray(arr);
if (minOps == -1) {
System.
out.
println("it's not possible to destroy the array."); } else {
System.
out.
println("Minimum number of operations to destroy the array: " + minOps
); }
}
}
aW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwppbXBvcnQgamF2YS51dGlsLk1hcDsKCmNsYXNzIE1haW4gewogICAgcHVibGljIHN0YXRpYyBpbnQgbWluT3BlcmF0aW9uc1RvRGVzdHJveUFycmF5KGludFtdIGFycikgewogICAgICAgIE1hcDxJbnRlZ2VyLCBJbnRlZ2VyPiBmcmVxTWFwID0gbmV3IEhhc2hNYXA8PigpOwogICAgICAgIGZvciAoaW50IG51bSA6IGFycil7CiAgICAgICAgICAgIGZyZXFNYXAucHV0KG51bSwgZnJlcU1hcC5nZXRPckRlZmF1bHQobnVtLCAwKSArIDEpOwogICAgICAgIH0KCiAgICAgICAgaW50IG1pbk9wZXJhdGlvbnMgPSAwOwogICAgICAgIGZvciAoIE1hcC5FbnRyeTxJbnRlZ2VyLCBJbnRlZ2VyPiBlbnRyeSA6IGZyZXFNYXAuZW50cnlTZXQoKSkgewogICAgICAgICAgICBpbnQgZnJlcSA9IGVudHJ5LmdldFZhbHVlKCk7CiAgICAgICAgICAgIGlmIChmcmVxID09IDEpIHsKICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vd2UgY2FuIGNvbnN1bWUgMiBvciAzIGVsZW1lbnRzIGluIG9uZSBvcGVyYXRpb24KICAgICAgICAgICAgICAgIC8vIGZvciBtaW4gLi4gc2VlIGhvdyBtYW55IDMncyBjYW4gYmUgcmVtb3ZlZAogICAgICAgICAgICAgICAgLy8gcmVtYWluZGVyIGNhbiBiZSAxIG9yIDIgb3IgMCBpZiAwIG5vIGV4dHJhIG9wZXJhdGlvbgogICAgICAgICAgICAgICAgLy8gaWYgcmVtYWluZGVyIGlzIDEgaXQgbWVhbnMgdGhhdCBpdCBjYW4gYmUgY291cGxlZCB3aXRoIGEgMyB0byBmb3JtIDQgdGhhdHMgMiArIDIgLi4gdGhhdHMgMiBvcGVyYXRpb25zIG5vdwogICAgICAgICAgICAgICAgLy8gcmVtYWluZGVyIDIgdGhlbiBhZGQgMSBvciBpZiAxIHRoZW4gYWxzbyBhZGQgMSAuLiB0aGF0cyB0aGUgbWVhbmluZyBvZiBmcmVxICUgMyAhPSAwID8gMSA6IDAKICAgICAgICAKICAgICAgICAgICAgICAgIG1pbk9wZXJhdGlvbnMgKz0gZnJlcSAvIDMgKyAoZnJlcSAlIDMgIT0gMCA/IDEgOiAwKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gbWluT3BlcmF0aW9uczsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgaW50W10gYXJyID0gezEsIDUsIDUsIDEsIDEsIDgsIDgsIDEwLCAxMH07CiAgICAgICAgaW50IG1pbk9wcyA9IG1pbk9wZXJhdGlvbnNUb0Rlc3Ryb3lBcnJheShhcnIpOwogICAgICAgIGlmIChtaW5PcHMgPT0gLTEpIHsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJpdCdzIG5vdCBwb3NzaWJsZSB0byBkZXN0cm95IHRoZSBhcnJheS4iKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk1pbmltdW0gbnVtYmVyIG9mIG9wZXJhdGlvbnMgdG8gZGVzdHJveSB0aGUgYXJyYXk6ICIgKyBtaW5PcHMpOwogICAgICAgIH0KICAgIH0KfQo=