Python实现旋转数组的3种算法

 Python实现旋转数组的3种算法

旋转数组是一种常见的数组操作,它将数组的元素按照一定的规则进行旋转。以下是Python中实现旋转数组的3种算法:

  1. 切片法

切片法是一种简单的方法,它通过切片操作将数组的元素旋转。具体来说,将数组的后k个元素切片并拼接到数组的前面即可。

def rotate_array(nums, k):
    k %= len(nums)
    nums[:] = nums[-k:] + nums[:-k]
  1. 反转法

反转法是一种常用的方法,它通过反转数组的元素来实现旋转。具体来说,先将整个数组反转,再将前k个元素反转,最后将后n-k个元素反转即可。

def rotate_array(nums, k):
    k %= len(nums)
    nums.reverse()
    nums[:k] = reversed(nums[:k])
    nums[k:] = reversed(nums[k:])
  1. 循环交换法

循环交换法是一种常见的方法,它通过循环交换数组的元素来实现旋转。具体来说,每次将数组的后k个元素往前移动,并将前面的元素往后移动,直到数组的所有元素都被移动。

def rotate_array(nums, k):
    k %= len(nums)
    count = 0
    start = 0
    while count < len(nums):
        current = start
        prev = nums[start]
        while True:
            next_idx = (current + k) % len(nums)
            nums[next_idx], prev = prev, nums[next_idx]
            current = next_idx
            count += 1
            if start == current:
                break
        start += 1

以上是Python中实现旋转数组的3种算法,每种算法都有其优缺点,根据具体情况选择合适的算法。