Yinelenenleri bulur ve bunları kaldırır takip algoritması var:
public static int numDuplicatesB(int[] arr) {
Sort.mergesort(arr);
int numDups = 0;
for (int i = 1; i < arr.length; i++) {
if (arr[i] == arr[i - 1]) {
numDups++;
} }
return numDups;
}
Bunun en kötü durum zaman karmaşıklığını bulmaya çalışıyorum. Mergesort'un olduğunu biliyorum nlog(n)
ve benim for döngümde, veri kümesinin tamamını yineleyerek sayın n
. Yine de bu rakamlarla ne yapacağımdan emin değilim. Onları bir araya toplayayım mı? Bunu yapacak olsaydım nasıl yapardım?