輸入 10 個整數,僅輸出不重複的數字(保留首次出現順序或排序均可)。
Set<Integer> set = new HashSet<>();
for (int i = 0; i < 10; i++) set.add(scanner.nextInt());
set.forEach(System.out::println);
int[] arr = new int[10];
int count = 0;
for (int i = 0; i < 10; i++) {
int n = scanner.nextInt();
boolean exists = false;
for (int j = 0; j < count; j++) if (arr[j] == n) { exists = true; break; }
if (!exists) arr[count++] = n;
}
for (int i = 0; i < count; i++) System.out.println(arr[i]);
IntStream.generate(scanner::nextInt).limit(10).distinct().forEach(System.out::println);
| 方法 | 時間複雜度 | 空間 | 順序保留 | 適用場景 |
|---|---|---|---|---|
| HashSet | O(N) | O(N) | 否 | 一般去重、不在乎順序 |
| LinkedHashSet | O(N) | O(N) | 是 | 需保留輸入順序 |
| 陣列遍歷 | O(N²) | O(1) | 是 | 教學、極小資料量 |
| Stream distinct | O(N) | O(N) | 是 | 函數式風格、JDK 8+ |
實務上優先使用 LinkedHashSet 兼顧效能與順序;教學作業可展示陣列遍歷邏輯。