189. 旋转数组(leetcode)

本题思路:三次旋转

  1. 1234567 -》 7654321  经过第一次旋转可把后3位数转到前面

  2. 7654321 -》 5674321  

  3. 5674321 -》5671234

其他思路:

  1.nums[ : ] =  nums[ k: ] + nums[ :k ]       切片

  2. for i in range(k) : nums.insert(0,nums.pop())

注意:

  1.本题要求原地修改,所以第一次旋转时:    nums[ : ] = nums[ ::-1 ] 

    a) 如此实在原地址上修改

    a) 如果直接用 nums = nums[ ::-1 ] 赋值给了一个新地址。

  

代码:

class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        k%=len(nums)
        nums[:] = nums[::-1]
        nums[k:] = nums[k:][::-1]
        nums[:k] = nums[:k][::-1]
        return 
原文地址:https://www.cnblogs.com/ChevisZhang/p/12713836.html