算法学习|LeeCode探索初级算法 || JavaScript实现旋转数组

题目:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 1. 暴力解法

var rotate = function(nums, k) { //变量n表示数组的长度 var n = nums.length; //变量tmpEnd代表结束值 var tmpEnd = 0; //变量tmpPrev代表起始值 var tmpPrev = 0; //for嵌套循环 //第一层for循环,循环k次 for(var i = 0; i

2. 三次反转解法
var rotate = function(nums, k) { //变量n表示数组的长度 var n = nums.length; //使用求余(求整除后的余数)运算符确定反转点K k %= n; //临时变量tmp var tmp = 0; //翻转整个数组 myReverse(0,n-1); //翻转K之前的数组 myReverse(0,k-1); //翻转k之后的数组 myReverse(k,n-1); //使用myReverse函数 function myReverse(start,end) { //使用while循环 while (start < end) { //将数组开始位置的值赋给临时变量tmp tmp = nums[start]; //将数组的结束值赋给数组起始值 nums[start] = nums[end]; //让tmp的值赋给结束值,从而实现数组的反转 nums[end] = tmp; //每一轮循环数组的起始值自增1 start++; //每一轮循环数组的结束值自减1 end--; //当起始值等于或大于结束值时跳出循环,从而实现数组的反转 } } }

    推荐阅读