JavaScript怎么旋转数组

发布时间:2022-04-24 10:59:45 作者:iii
来源:亿速云 阅读:168

本篇内容介绍了“JavaScript怎么旋转数组”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

JavaScript怎么旋转数组

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,回到原点了,count < n, start++, 接着 2-4-6-2,回到原点,count = n, 结束。轨迹是六边形的2个内嵌正三角形。

其它多边形类似,隔k个点往前走,总能走回原点,如果中间有漏的,旋转一个角的方位重复进行上述步骤就能走完所有的顶点了。

3.LeetCode题目

给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。
示例 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]

4.解法

我们用下面的例子更具体地说明这个过程:

nums = [1, 2, 3, 4, 5, 6]
k = 2

JavaScript怎么旋转数组

5.代码实现

leetcode超时,但是思路对,删除最后一个,把最后删除的那个元素添加到数组的最前面

     <script>
          for (var i = 0; i < k; i++) {
            var p = nums.pop();
             nums.unshift(p);
         }
            return nums;
              </script>

这个是又更改算法了

  <script>
        var rotate = function(nums, k) {
            if (k > 0) {
                var arr = [];
                for (var i = 0; i < nums.length; i++) {
                    arr[i] = nums[i];
                }
                for (var i = 0; i < nums.length; i++) {
                    nums[(i + k) % arr.length] = arr[i];
                }
                return nums;
            }
        }
        console.log(rotate([1, 2, 3, 4, 5, 6, 7], 3));
     
    </script>

“JavaScript怎么旋转数组”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

推荐阅读:
  1. 剑指offer:旋转数组的最小值
  2. 还是一道旋转数组的题目

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

javascript

上一篇:rgba在css3的概念是什么

下一篇:如何使用Nodejs实现SSO

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》