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)的主要内容,如果未能解决你的问题,请参考以下文章