首頁  >  文章  >  web前端  >  JavaScript 程式在陣列右旋轉 K 次後找出第 M 個元素

JavaScript 程式在陣列右旋轉 K 次後找出第 M 個元素

WBOY
WBOY轉載
2023-09-05 11:05:07857瀏覽

JavaScript 程序在数组右旋转 K 次后查找第 M 个元素

我們正在寫一個 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中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除