题目
https://leetcode-cn.com/problems/rotate-array/
个人解法
测试用例数(个) | 执行用时(ms) | 战胜 |
---|---|---|
34 | 116 | 70.10% |
/**
* @param {number[]} nums
* @param {number} k
* @return {void} Do not return anything, modify nums in-place instead.
*/
var rotate = function(nums, k) {
var len = nums.length;
var originNums = {};
for (var i = 0 ; i < len ; i++) {
var num = originNums[i] !== undefined
? originNums[i]
: nums[i];
var nextIndex = (i + k) % len;
originNums[nextIndex] = nums[nextIndex];
nums[nextIndex] = num;
}
return nums;
};
最快解法
测试用例数(个) | 执行用时(ms) | 战胜 |
---|---|---|
34 | 64 | 100% |
/**
* @param {number[]} nums
* @param {number} k
* @return {void} Do not return anything, modify nums in-place instead.
*/
var rotate = function(nums, k) {
let l = nums.length;
k %= l
nums.unshift(...nums.splice(nums.length - k, k))
};
分析
此题的关键点如下:
- 复杂度 O(1) 原地算法
个人解决:
着眼点还是局限在单个元素的旋转上。
最快解决:
将部分作为整体前置,实现整体旋转。视野更高。