leetcode_数组 189. 轮转数组

189. 轮转数组

  • 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数

  • 示例 1:

    • 输入: nums = [1,2,3,4,5,6,7], k = 3
    • 输出: [5,6,7,1,2,3,4]
  • 示例 2:

    • 输入:nums = [-1,-100,3,99], k = 2
    • 输出:[3,99,-1,-100]

思路

  1. 首先计算有效轮转次数,轮转 k 次和轮转 k % len(nums) 次效果相同
  2. 向右轮转 k 个位置,相当于将数组的最后 k 个元素移动到前面,即新数组 = nums[-k:] + nums[:-k],注意前后拼接顺序

实现

bash 复制代码
class Solution(object):
    def rotate(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: None Do not return anything, modify nums in-place instead.
        """

        k = k % len(nums)
        nums[:] = nums[-k:] + nums[:-k]
        
        return nums
  • 时间复杂度: O(n)
  • 空间复杂度: O(1)
相关推荐
帮帮志17 分钟前
PyCharm 开发工具 修改字体大小及使用滚轮没有反应
ide·python·pycharm
蒟蒻小袁23 分钟前
力扣面试150题—旋转图像和矩阵置零
leetcode
知星小度S28 分钟前
算法训练之贪心
算法
流云一号33 分钟前
Python实现贪吃蛇二
开发语言·python
PHASELESS4111 小时前
Java栈与队列深度解析:结构、实现与应用指南
java·开发语言·算法
听风吹等浪起1 小时前
NLP实战(3):RNN英文名国家分类
人工智能·python·rnn·深度学习
Nigori7_1 小时前
day33-动态规划__62.不同路径__63. 不同路径 II __343. 整数拆分__343. 整数拆分
算法·动态规划
SeasonedDriverDG1 小时前
C语言编写的线程池
linux·c语言·开发语言·算法
2401_872945091 小时前
【补题】Codeforces Round 857 (Div. 1) A. The Very Beautiful Blanket
算法
LAOLONG-C1 小时前
C语言 栈 的 描述 和 详解
c语言·数据结构·算法