Masalah "Two Sum II - Input Array Is Sorted" ialah cabaran pengekodan klasik yang menguji pemahaman anda tentang tatasusunan dan manipulasi penunjuk. Ia juga merupakan peluang yang baik untuk mempamerkan penyelesaian yang elegan dan cekap. Mari kita selami masalah ini dan pecahkan pendekatan optimum untuk menyelesaikannya.
Pautan kepada masalah pada LeetCode
Memandangkan tatasusunan 1-indeks nombor integer yang diisih dalam susunan tidak menurun, matlamat anda adalah untuk mencari dua nombor supaya jumlahnya sama dengan sasaran tertentu. Anda perlu mengembalikan indeks dua nombor ini sebagai tatasusunan [index1, index2] dengan 1 <= index1 < indeks2 <= nombor.panjang. Penyelesaiannya hendaklah menggunakan hanya ruang tambahan yang berterusan.
Input: nombor = [2,7,11,15], sasaran = 9
Output: [1, 2]
Input: nombor = [2,3,4], sasaran = 6
Output: [1, 3]
Input: nombor = [-1,0], sasaran = -1
Output: [1, 2]
Kekangan masalah—susunan tersusun dan penyelesaian tunggal—menjadikannya calon yang sempurna untuk teknik dua mata. Inilah sebabnya:
Di bawah ialah pelaksanaan JavaScript bagi pendekatan dua mata:
/** * @param {number[]} nums * @param {number} target * @return {number[]} */ var twoSum = function(nums, target) { const length = nums.length; let rightPointer = length - 1; let leftPointer = 0; while (leftPointer < rightPointer) { if (nums[leftPointer] + nums[rightPointer] === target) { return [leftPointer + 1, rightPointer + 1]; } if (nums[leftPointer] + nums[rightPointer] > target) { rightPointer--; } else { leftPointer++; } } };Bagaimana Ia Berfungsi
Mulakan Dua Penunjuk:
- leftPointer bermula pada permulaan tatasusunan.
- rightPointer bermula pada penghujung tatasusunan.
Lelar Sehingga Mereka Bertemu:
- Kira jumlah elemen di leftPointer dan rightPointer.
- Jika jumlahnya sepadan dengan sasaran, kembalikan kedudukan 1 diindeks.
- Jika jumlah lebih besar daripada sasaran, kurangkan Penunjuk kanan untuk mengurangkan jumlah.
- Jika jumlah kurang daripada sasaran, naikkan Penunjuk kiri untuk menambah jumlah.
Kembalikan Indeks:
- Setelah pasangan yang betul ditemui, gelung ditamatkan dan mengembalikan indeks.
Contoh Panduan
Mari kita lihat contoh pertama:
Kaedah dua penuding dengan elegan menyelesaikan masalah "Two Sum II - Input Array Is Sorted" dengan memanfaatkan sifat tersusun tatasusunan input. Ia merupakan teknik berkuasa yang bukan sahaja memastikan kecekapan tetapi juga mematuhi kekangan ruang, menjadikannya pendekatan yang sesuai untuk masalah yang sama. Selamat mengekod!
Atas ialah kandungan terperinci Menyelesaikan Dua Jumlah II dengan Cekap - Tatasusunan Input Diisih. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!