【发布时间】:2020-03-08 21:15:54
【问题描述】:
给定一个数组,将数组向右旋转 k 步,其中 k 为非负数。
示例 1:
输入: [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]
我的解决方案:
var rotate = function(nums, k) {
while(k>0){
let lastelm = nums[nums.length-1];
for(let i =nums.length; i>0;i--){
temp = nums[i-1];
nums[i-1] = nums[i-2];
}
nums[0]=lastelm
k--;
}
};
我认为我的解决方案是 O(k*nums.length)
我修改整个数组的次数是 k
有什么更好的方法来解决这个问题?
【问题讨论】:
-
@mplungjan 我不同意。性能在代码中总是很重要,唯一的问题是程度。这个问题清楚地提到了大 O 表示法中某事物的速度有多快,这是一个纯粹的客观衡量标准。
标签: javascript arrays algorithm data-structures