Mengoptimumkan Algoritma Penyingkiran Duplikat daripada Tatasusunan
Kod yang disediakan bertujuan untuk mengalih keluar nilai pendua daripada tatasusunan tanpa menggunakan alatan terbina dalam seperti Set atau iterator. Walau bagaimanapun, ia menghadapi kesesakan prestasi apabila berurusan dengan sejumlah besar elemen. Isu ini berpunca daripada struktur gelung bersarang, di mana setiap elemen dibandingkan dengan semua elemen berikutnya.
Untuk meningkatkan kecekapan algoritma, pertimbangkan strategi pengoptimuman berikut:
Menggunakan HashSet:
Walaupun tugas itu secara jelas melarang penggunaan Set atau HashSet, ia berbaloi menyatakan bahawa HashSet menyediakan penyelesaian yang cekap untuk menghapuskan pendua. Pelaksanaannya menggunakan jadual cincang untuk menjejaki kewujudan setiap elemen, membolehkan carian dan pemasukan masa berterusan.
Set<Integer> uniqueValues = new HashSet<>(); for (int num : arr) { uniqueValues.add(num); }
Set Nilai unik yang terhasil akan mengandungi hanya elemen yang berbeza.
Memelihara Susunan Elemen:
Jika mengekalkan susunan asal unsur adalah penting, pengubahsuaian versi algoritma yang disediakan boleh digunakan:
// Create a boolean array to track duplicates boolean[] duplicates = new boolean[arr.length]; // Find and mark duplicates in the first iteration for (int i = 0; i < arr.length; i++) { for (int j = i + 1; j < arr.length; j++) { if (arr[i] == arr[j]) { duplicates[j] = true; } } } // Create a new array to store unique values int[] uniqueArr = new int[arr.length - duplicates.length]; int uniqueIndex = 0; // Copy unique values into the new array for (int i = 0; i < arr.length; i++) { if (!duplicates[i]) { uniqueArr[uniqueIndex++] = arr[i]; } } return uniqueArr;
Algoritma ini mencapai kerumitan masa O(n²) sambil mengekalkan susunan unsur asal.
Atas ialah kandungan terperinci Bagaimanakah Kami Boleh Mengoptimumkan Algoritma Penyingkiran Duplikat untuk Tatasusunan Besar Tanpa Menggunakan Fungsi Set Terbina dalam?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!