数组的旋转,js数组右移
这篇文章给大家带来了一些关于javascript的知识,包括一些关于旋转数组的问题,包括什么是旋转数组,环替换等等。下面我们就来看看,希望能帮到你。
【相关推荐:javascript视频教程,web前端】
1.什么是旋转数组
旋转阵列可分为左旋和右旋。力扣189题为右旋,今天分享的是左旋。
给定一个数组,将数组中的元素向左旋转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,回到原点。数n,开始,然后2-4-6-2,回到原点。count=n,结束。轨迹是六边形的两个嵌入的正三角形。
其他多边形也类似。每前进k个点,总能回到原点。如果中间有漏点,旋转一个角重复上述步骤就可以完成所有顶点。
3.LeetCode题目
给出一个数组并将数组中的元素向右旋转k个位置,其中k为非负。
示例1:
输入:nums=[1,2,3,4,5,6,7],k=3
产出:[5,6,7,1,2,3,4]
解释:
向右旋转一步:[7,1,2,3,4,5,6]
向右旋转两步:[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]
向右旋转两步:[3,99,-1,-100]
4.解法
我们用下面的例子更具体地说明这个过程:
nums=[1,2,3,4,5,6]
k=2
5.代码实现
leetcode超时,但思路是对的。删除最后一个并将最后删除的元素添加到数组的前面。
脚本
for(var I=0;我k;i ) {
var p=nums . pop();
nums . un shift(p);
}
返回nums
/script这是另一个算法变化。
脚本
var rotate=function(nums,k) {
if (k 0) {
var arr=[];
for(var I=0;i nums.lengthi ) {
arr[I]=nums[I];
}
for(var I=0;i nums.lengthi ) {
nums[(I k)% arr . length]=arr[I];
}
返回nums
}
}
console.log(rotate([1,2,3,4,5,6,7],3));
/script里面还是有很多想法的。您可以翻转阵列、添加阵列或删除阵列。
【相关推荐:javascript视频教程,web前端】以上是用JavaScript例子讲解旋转数组的细节。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。