文巾解题 189. 旋转数组

Posted 刘文巾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文巾解题 189. 旋转数组相关的知识,希望对你有一定的参考价值。

1 题目描述

2 解题思路

2.1 轮转赋值

建立一个辅助数组,辅助数组第(i+k)%len(nums)位的值等于原来的nums数组的第i位的值

class Solution(object):
    def rotate(self, nums, k):
        l=len(nums)
        ret=[0]*l
        for i in range(l):
            ret[(i+k)%l]=nums[i]
        for i in range(l):
            nums[i]=ret[i]

2.2 切片

-k%len(nums)到末尾的值移动到最前面,首位到-k%len(nums)的值移动到最后面

class Solution(object):
    def rotate(self, nums, k):
        l=len(nums)
        ret=nums[-k%l:]+nums[:-k%l]
        
        for i in range(l):
            nums[i]=ret[i]

2.3 翻转

先将整个数组翻转,翻转后的数组的前k位翻转,再将后面的数组翻转

class Solution(object):
    def rotate(self, nums, k):
        l=len(nums)
        nums.reverse()
        nums
        tmp1=list(reversed(nums[:k%l]))
        tmp2=list(reversed(nums[k%l:]))
        lt1=len(tmp1)
        lt2=len(tmp2)
        for i in range(lt1):
            nums[i]=tmp1[i]
        for i in range(lt2):
            nums[i+lt1]=tmp2[i]
        nums

以上是关于文巾解题 189. 旋转数组的主要内容,如果未能解决你的问题,请参考以下文章

力扣题解 189th 旋转数组

力扣题解 189th 旋转数组

文巾解题 1480. 一维数组的动态和

文巾解题 977. 有序数组的平方

java刷题--189旋转数组

文巾解题1588. 所有奇数长度子数组的和