旋转数组

作者: Mark_大东 | 来源:发表于2020-06-11 10:54 被阅读0次

旋转数组

难道:简单

第一种方法:

暴力解法

时间复杂度:O(n * k)

// k代表着循环次数
// 一次一循环是最后一个与第一个进行位置交换,然后数据相互赋值,然后第一个与第二个相互交换赋值
var rotate = function(nums, k) {
  let temp,next
  for (let i = 0 ; i < k ; i ++){
      next = nums[nums.length - 1]
      for (let j = 0 ; j < nums.length ; j ++){
          temp = nums[j]
          nums[j] = next
          next = temp
      }
  }
};

第二种方法:

使用额外的数组

时间复杂度:O(n)

空间复杂度:O(n)

// arr的长度与nums的长度一致
// 如:nums = [1,2,3,4,5]  ; k = 2 ; arr = [4,5,1,2,3]
// 以上我们可以得出:
// arr[2] = nums[0] ;
// arr [(0 + 2) % 5] = nums[0] ;
// arr [(i + k) % nums.length] = nums[i]
var rotate = function(nums, k) {
    let arr = []
    for (let i = 0 ; i < nums.length ; i ++){
        arr [(i + k) % nums.length] = nums[i]
    }
    for (let i = 0 ; i < nums.length ; i ++){
        nums[i] = arr[i]
    }
};

第三中方法

var rotate = function(nums, k) {
    nums.unshift(...nums.splice(nums.length - k ,nums.length))
};

相关文章

  • [剑指offer]08-旋转数组的最小数字

    旋转数组的最小数字 题目 给定一个递增的旋转数组A,返回旋转数组中的最小值。旋转数组:给定一个已排序的数组,假设为...

  • 旋转数组的最小值

    旋转数组的最小值 所谓旋转数组,即是递增有序数组旋转右移动若干位得到的数组,这里的右移和java里的>>>有点不同...

  • Day6 剑指offer:旋转数字的最小数

    把一个数组最开始的若干个数组搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组...

  • 39. 恢复旋转排序数组

    给定一个旋转排序数组,在原地恢复其排序。说明:什么是旋转数组?比如,原始数组为[1,2,3,4], 则其旋转数组可...

  • 剑指Offer算法题-旋转数组的最小数字--Swift

    题目:把一个数组最开始的若干个元素搬到数组的尾部,我们称之为数组的旋转。输入一个递增数组的旋转,输出旋转数组的最小...

  • [查找和排序]旋转数组的最小数字

    把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组...

  • 旋转数组的最小数字

    把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组...

  • 面试题11: 旋转数组的最小数字

    题意:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个升序的数组的一个旋转,输出旋转数组...

  • 数组旋转

    数组旋转运行时限: 1000 ms 单次运行时限: 1000 ms 内存限制: 32 MB总提交: 206...

  • 每日一题 [10]-旋转数组的最小数字

    把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组...

网友评论

    本文标题:旋转数组

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