JavaScript實例詳解之旋轉數組

本篇文章給大家帶來了關于javascript的相關知識 , 其中主要介紹了關于旋轉數組的相關問題 , 包括了什么是旋轉數組、環狀替換等等內容 , 下面一起來看一下 , 希望對大家有幫助 。

JavaScript實例詳解之旋轉數組

文章插圖

【相關推薦:javascript視頻教程、web前端】
1.什么是旋轉數組旋轉數組分為左旋轉和右旋轉兩類 , 力扣 189 題為右旋轉的情況 , 今日分享的為左旋轉 。
【JavaScript實例詳解之旋轉數組】給定一個數組 , 將數組中的元素向左旋轉 k 個位置 , 其中 k 是非負數 。
2.環狀替換環狀替換比較難理解 。 如果把數組的數據放在正多邊形上 , 以走跳棋的思路替換數據 , 畫個圖就好理解了 。
假如 n=5, k=2, 數字1-5依次放在五邊形頂點 , 數字替換的軌跡是1-3-5-2-4-1 , 回到原點 , count = n ,  結束 。 軌跡畫出來剛好是個五角星 。
假如 n=6, k=2, 數字1-6依次放在六邊形頂點 , 數字替換的軌跡是1-3-5-1 , 回到原點了 , count < n, start++, 接著 2-4-6-2 , 回到原點 , count = n, 結束 。 軌跡是六邊形的2個內嵌正三角形 。
其它多邊形類似 , 隔k個點往前走 , 總能走回原點 , 如果中間有漏的 , 旋轉一個角的方位重復進行上述步驟就能走完所有的頂點了 。
3.LeetCode題目給你一個數組 , 將數組中的元素向右輪轉 k 個位置 , 其中 k 是非負數 。
示例 1:
輸入: nums = [1,2,3,4,5,6,7], k = 3輸出: [5,6,7,1,2,3,4]解釋:向右輪轉 1 步: [7,1,2,3,4,5,6]向右輪轉 2 步: [6,7,1,2,3,4,5]向右輪轉 3 步: [5,6,7,1,2,3,4]示例 2:
輸入:nums = [-1,-100,3,99], k = 2輸出:[3,99,-1,-100]解釋: 向右輪轉 1 步: [99,-1,-100,3]向右輪轉 2 步: [3,99,-1,-100]4.解法我們用下面的例子更具體地說明這個過程:
nums = [1, 2, 3, 4, 5, 6]k = 2
JavaScript實例詳解之旋轉數組

文章插圖

5.代碼實現leetcode超時 , 但是思路對 , 刪除最后一個 , 把最后刪除的那個元素添加到數組的最前面
<script> for (var i = 0; i < k; i++) { var p = nums.pop(); nums.unshift(p); } return nums; </script>這個是又更改算法了
<script> var rotate = function(nums, k) { if (k > 0) { var arr = []; for (var i = 0; i < nums.length; i++) { arr[i] = nums[i]; } for (var i = 0; i < nums.length; i++) { nums[(i + k) % arr.length] = arr[i]; } return nums; } } console.log(rotate([1, 2, 3, 4, 5, 6, 7], 3)); </script>思路還是很多 , 翻轉數組還是增加數組或者刪除數組都可以做到
【相關推薦:javascript視頻教程、web前端】
以上就是JavaScript實例詳解之旋轉數組的詳細內容 , 更多請關注電腦自學網其它相關文章!

    推薦閱讀