旋转一个数组。
function rotate(array,n){
var l =array.length,a=array.map(function(x){return x}),arr=[];
n=n-Math.floor(n/l)*l;
for(var i=0;i<l;i++){
if((i+n)<l&&(i+n)>=0){
arr[i+n]=a[i];
}
else if((i+n)>=l){
arr[i+n-l]=a[i];
}
else if((i+n)<0){
arr[l+i+n]=a[i];
}
}
return arr;
}
不提后面的遍历,只说那个n=n-Math.floor(n/l)*l;
我就醉了。
solution 主要是用了slice这个方法。
function rotate(array, n) {
n = n % array.length
return array.slice(-n).concat(array.slice(0, -n))
}