我們正在寫一個 JavaScript 程式來尋找陣列右旋轉 k 次後的第 m 個元素。首先,我們將取得數組 m 和 k 的輸入。然後,我們將使用循環來執行正確的旋轉。在循環的每次迭代中,我們將數組的最後一個元素移動到第一個位置。我們將繼續這個循環 k 次以獲得旋轉後的陣列。最後,我們將返迴旋轉數組的第 m 個元素作為結果。
在陣列右旋轉 k 次後找出第 m 個元素的方法可以分解如下 -
計算 k 次旋轉後第 m 個元素的實際位置,即 (m-k) % n,其中 n 是陣列的長度。
檢查計算出的位置是否為負,在這種情況下可以透過新增 n 將其轉換為正位置。
傳回數組中計算位置的元素。
要最佳化此解決方案,您可以使用模運算子將計算的位置保持在陣列範圍內,這樣您就無需檢查負值。
此解的時間複雜度為 O(1),因為計算最終位置和擷取該位置的元素都是常數時間運算。
空間複雜度為 O(1),因為解決方案中沒有使用額外的資料結構。
這是一個 JavaScript 程式的範例,它在陣列右旋轉 k 次後找到第 m 個元素
function findElement(arr, k, m) { k = k % arr.length; // handling large k values return arr[(arr.length - k + m - 1) % arr.length]; } let arr = [1, 2, 3, 4, 5]; let k = 2; let m = 3; console.log(findElement(arr, k, m));
findElement函數接受陣列arr、旋轉次數 k以及要尋找的第m個元素。 p>
k = k % arr.length 行計算處理大 k 值後在陣列上執行的實際旋轉次數。這樣做是因為將數組旋轉超過其長度不會改變其位置,因此對數組長度取 k 模即可得出實際執行的旋轉次數。
行return arr[(arr.length - k m - 1) % arr.length];計算k次旋轉後第m個元素的位置。表達式arr.length - k給出了一個經過k次旋轉後數組的起始位置,然後 m - 1給出了第m個元素的位置,最後取與數組長度取模可確保該位置在超出範圍時環繞數組末端。
最後,程式呼叫findElement函數並記錄結果。在本例中,輸出將為 4。
以上是JavaScript 程式在陣列右旋轉 K 次後找出第 M 個元素的詳細內容。更多資訊請關注PHP中文網其他相關文章!