S: Bagaimanakah anda membalikkan senarai terpaut?
- Jawapan: Membalikkan senarai terpaut melibatkan menukar arah penudingnya supaya senarai itu bermula dari elemen terakhir dan berakhir pada yang pertama.
- Contoh:
Input: 1 -> 2 -> 3 -> 4 -> null
Output: 4 -> 3 -> 2 -> 1 -> null
S: Bagaimanakah anda melakukan carian binari pada tatasusunan yang diisih?
- Jawapan: Carian binari membahagikan tatasusunan kepada separuh berulang kali, menyemak sama ada elemen tengah sepadan dengan sasaran.
- Contoh:
Input: Tatasusunan [1, 3, 5, 7, 9], Sasaran = 7
Output: 3 (indeks 7)
- Pendekatan Penyelesaian: Semak elemen tengah; jika ia adalah sasaran, kembalikan indeks. Jika sasaran lebih kecil, cari bahagian kiri; jika lebih besar, cari bahagian kanan.
S: Bagaimanakah anda mencari watak unik pertama dalam rentetan?
- Jawapan: Untuk mencari watak unik yang pertama, hitung kejadian setiap watak dan kenal pasti watak pertama yang muncul sekali sahaja.
- Contoh:
Input: "Swiss"
Output: "w"
- Pendekatan Penyelesaian: Gunakan peta cincang untuk menyimpan kekerapan setiap aksara, kemudian lelaran melalui rentetan untuk mencari aksara pertama dengan kiraan 1.
S: Bagaimanakah anda mengesan kitaran dalam senarai terpaut?
- Jawapan: Untuk mengesan kitaran dalam senarai terpaut, gunakan dua penunjuk (perlahan dan cepat). Jika ada kitaran, penuding pantas akhirnya akan bertemu dengan penuding perlahan.
- Contoh:
Input: 1 -> 2 -> 3 -> 4 -> 2 (kitaran)
Output: Benar (kitaran wujud)
- Pendekatan: Gunakan algoritma Pengesanan Kitaran Floyd. Gerakkan penunjuk pantas dua langkah dan penunjuk perlahan satu langkah. Jika mereka bertemu, ada satu kitaran.
Atas ialah kandungan terperinci Soalan Temuduga DSA Yang Lazim Ditanya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!