LeetCodeの題解:189.回転配列、環状の交替、JavaScript、詳細な注釈
ソースリンク:https://leetcode-cn.com/problems/rotate-array/
問題解決の考え方:
この解法は公式の題解と「回転配列」を参考にして元の位置を変えて、詳しい図解を示して、詳しい注釈を提供して、理解を助けます.
問題解決の考え方:
この解法は公式の題解と「回転配列」を参考にして元の位置を変えて、詳しい図解を示して、詳しい注釈を提供して、理解を助けます.
/**
* @param {number[]} nums
* @param {number} k
* @return {void} Do not return anything, modify nums in-place instead.
*/
var rotate = function (nums, k) {
k = k % nums.length; // k ,
let count = 0; //
/*
* 2 :
* 1. count , count , 。
* 2. start , , while
*/
for (let start = 0; count < nums.length; start++) {
let currentMoveIndex = start; //
let currentMoveItem = nums[start]; //
do {
// , k
let nextMoveIndex = (currentMoveIndex + k) % nums.length;
//
let temp = nums[nextMoveIndex];
//
nums[nextMoveIndex] = currentMoveItem;
// temp
currentMoveItem = temp;
// nextMoveIndex
currentMoveIndex = nextMoveIndex;
count++; //
} while (
/*
* :
* 1. nums.length k 1, m。
* m while ,start currentMoveIndex 。
* start, 。
* 2. nums.length k 1,start currentMoveIndex 。
* currentMoveIndex=nums.length-1,
* 。
*/
start !== currentMoveIndex
);
}
};