湖南网站设计公司,常州网站建设策划,网站商业模板,什么是平面设计 都包括哪些内容文章目录 1、问题2、示例3、解决方法#xff08;1#xff09;方法1——while遍历#xff08;较为复杂#xff0c;不推荐#xff09;#xff08;2#xff09;方法2#xff08;直接截取后插入#xff0c;推荐#xff09;#xff08;3#xff09;方法3——优化方法21方法1——while遍历较为复杂不推荐2方法2直接截取后插入推荐3方法3——优化方法2一行解决 总结 1、问题 给定一个整数数组 nums将数组中的元素向右轮转 k 个位置其中 k 是非负数。 2、示例 示例 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] 3、解决方法
1方法1——while遍历较为复杂不推荐
let nums [1,2,3,4,5,6,7,8,9,10], k 6
var rotate function(nums, k) {// 1: 循环 k 1 k-- 就是k有多大循环多少次while(k1){// 2: 在数组的最前面插入 删除最后的一个数据nums.unshift(nums.pop())k--;}// 3: 返回的数据console.log(res, nums);
};
rotate(nums, k) 2方法2直接截取后插入推荐
let nums [1,2,3,4,5,6,7,8,9,10], k 6
var rotate function(nums, k) {// 1: 切割k个数据如[1,2,3,4,5,6,7,8,9,10], k 3获取[8,9,10]let newNums nums.splice(nums.length - k,nums.length)// 2: 将切割后的数组解构赋值插入到原数组到最前面nums.unshift(...newNums)// 3: 返回的数据console.log(res, nums);
};
rotate(nums, k) 3方法3——优化方法2一行解决 关键点 splice方法中的第一个参数可以为负数从末尾开始计算。这样就可以直接截取后面k个数据放到最前面比上面的简单多了 let nums [1,2,3,4,5,6,7,8,9,10], k 6
var rotate function(nums, k) {// 思路和方法二是一样的区别是splice这个方法插入负数的使用方式nums.splice(0,0,...nums.splice(-k)) // 将后面截取的放到最前面console.log(res, nums);
};
rotate(nums, k) 总结 难度中等 其他在方法三中你也可以使用unshift将截取多解构赋值插入同方法二中类似。说这些是想说明思路很重要。