JavaScript程式:查詢旋轉後指定索引處的元素


我們將實現一個JavaScript程式,用於查詢經過多次旋轉後給定索引處的元素。此程式需要我們對陣列進行旋轉,然後返回指定索引處的元素。為了完成此任務,我們將使用模運算子來計算每次旋轉後的新索引。在整個解釋中,都將使用將來進行時。

在程式中,我們將輸入陣列、旋轉次數和索引。然後,我們將使用模運算子進行旋轉,以查詢每次旋轉後的新索引。新索引將透過將旋轉次數新增到原始索引,然後取該和與陣列長度的模來找到。陣列最終索引處的元素將作為程式的結果返回。

總而言之,我們將開發一個簡單高效的程式,用於查詢經過多次旋轉後給定索引處的元素。此程式將演示模運算子的使用,並將成為任何想要在JavaScript中執行陣列旋轉的人的有價值的工具。

方法

給定一個元素陣列和旋轉次數k,任務是查詢旋轉後給定索引n處的元素。

  • 首先,確定旋轉k次後元素的實際位置。實際位置可以透過取nk的模來找到。

  • 透過將元素向右移動k次來對陣列進行旋轉。

  • 為了實現旋轉,我們可以使用以下方法:

    • 將最後一個元素儲存到臨時變數中。

    • 將所有元素向右移動一步。

    • 用臨時變數替換第一個元素。

  • 重複步驟3 k次以完成所有旋轉。

  • 所有旋轉完成後,返回第n個索引處的元素,該元素現在是實際位置。

  • 這種方法的時間複雜度為O(n * k),其中n是陣列中的元素數量。但是,這可以透過使用迴圈旋轉的概念最佳化為O(n)

示例

這是一個查詢旋轉後給定索引處的元素的JavaScript程式:

function findElement(arr, rotations, index) {
   // Number of rotations modulo length of the array
   rotations = rotations % arr.length;
     
   // New index after rotations
   let newIndex = (arr.length + index - rotations) % arr.length;
    
   // Return element at new index
   return arr[newIndex];
}
let arr = [1, 2, 3, 4, 5];
let rotations = 2;
let index = 4;
console.log(findElement(arr, rotations, index)); // Output: 3

在這個例子中,結果是4,這是旋轉2次後索引3處的元素。

解釋

  • findElement函式接受三個引數:arr、rotations和index。arr是元素陣列,rotations是對陣列執行的旋轉次數,index是旋轉後要查詢的元素的索引。

  • 函式的第一行計算旋轉次數對陣列長度的模。這是因為如果旋轉次數大於陣列長度,則在一些旋轉之後,陣列將返回其原始狀態。因此,我們只需要執行相當於陣列長度的旋轉。

  • 下一行計算旋轉後元素的新索引。它透過從給定索引中減去旋轉次數並將陣列長度新增到結果來實現此目的。最後一步是取結果與陣列長度的模。

  • 最後,函式返回新索引處的元素。

  • 在下面的程式碼中,我們初始化陣列arr、旋轉次數和索引index

  • 程式碼的最後一行呼叫findElement函式並將結果列印到控制檯。

更新於:2023年3月15日

89 次瀏覽

開啟您的職業生涯

完成課程後獲得認證

開始學習
廣告