LeetCode:189. 旋转数组(python3)

Posted 南岸青栀*

tags:

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

189. 旋转数组

在这里插入图片描述

法1:使用for循环,依次将最后一个弹出,然后插入数组首部

class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        for i in range(k):
            lst = nums.pop()
            nums.insert(0,lst)

法2:利用切片,找到分割点,进行前后调换。

class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        #法2
        k = k%len(nums)
        nums[:] = nums[len(nums)-k:]+nums[0:len(nums)-k]

法3:反转法

在这里插入图片描述

因为题目进阶要求空间复杂度O(1)

class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        #法3:三次反转法
        k = k%len(nums)
        if k != 0:
            nums.reverse()
            nums[0:k] = nums[k-1::-1]
            nums[k::] = nums[-1:-(len(nums)-k+1):-1]
class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        #法3:三次反转法
        k = k%len(nums)
        nums.reverse()
        nums[0:k] = list(reversed(nums[:k]))
        nums[k::] = list(reversed(nums[k::]))

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

前端与算法 leetcode 189. 旋转数组

数组旋转 Leetcode#189

LeetCode 189 Rotate Array(旋转数组)

旋转数组leetcode 189

LeetCode 189 旋转数组

LeetCode:189. 旋转数组