Tôi có thuật toán theo sau để tìm các bản sao và loại bỏ chúng:
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;
}
Tôi đang cố gắng tìm ra sự phức tạp thời gian trường hợp xấu nhất của điều này. Tôi biết sự hợp nhất là nlog(n)
và trong vòng lặp for của tôi, tôi đang lặp lại toàn bộ tập dữ liệu để được tính là n
. Tôi không chắc phải làm gì với những con số này mặc dù. Tôi có nên tổng hợp chúng lại với nhau? Nếu tôi làm điều đó, tôi sẽ làm thế nào?