美文网首页
旋转数组

旋转数组

作者: fan_8209 | 来源:发表于2021-04-11 17:42 被阅读0次

    给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。
    进阶:
    尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。
    你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?
    示例 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]
    一、拆分数组


    image.png
    var reverse = function(arr,left,right){
        while(left<right){
            let temp = arr[left]
            arr[left] = arr[right]
            arr[right] = temp
            left++
            right--
    
        }
        // console.log(arr)
    }
    var rotate = function(arr,k){
        k=k%arr.length //取余数,当k<arr.length余数为k,当k>arr.length(k为arr.length倍数时相当于没转)取余数
        reverse(arr,0,arr.length-1)
        reverse(arr,0,k-1)
        reverse(arr,k,arr.length-1)
        console.log(arr)
    }
    rotate([1,2,3,4,5,6,7], 3)
    

    相关文章

      网友评论

          本文标题:旋转数组

          本文链接:https://www.haomeiwen.com/subject/pfdwkltx.html