Ai đó có thể cho tôi biết độ phức tạp của mã dưới đây không?Độ phức tạp về thời gian được đặt trong Java
a
là một mảng int.
Set<Integer> set = new HashSet<Integer>();
for (int i = 0; i < a.length; i++) {
if (set.contains(arr[i])) {
System.out.println("Hello");
}
set.add(arr[i]);
}
Tôi nghĩ rằng đó là O (n), nhưng tôi không chắc chắn vì nó được sử dụng Set
và điều này có chứa các phương pháp là tốt. Nó cũng đang gọi phương thức add
của set
.
Có ai có thể xác nhận và giải thích độ phức tạp của toàn bộ mã trên không? Ngoài ra, nó sẽ mất bao nhiêu không gian?
Độ phức tạp của không gian là 2n trong trường hợp các số nguyên như thế nào? Tôi không hiểu. Bạn có thể giải thích ngắn gọn không? – anon
Điều đó thật thú vị. Ban đầu tôi nghĩ rằng độ phức tạp thời gian sẽ là O (a.len) * O (arr.len) tức là O (n^2). Tốt để biết rằng HashSet thực sự là rất hữu ích. –