leetcode_gym/_problems/rotateArray.md
2026-08-25 19:14:07 -06:00

995 B

layout, title, last_solved, category, leetcode_url, status
layout title last_solved category leetcode_url status
page Rotate Array 2020-06-04 array https://leetcode.com/problems/rotate-array/ Semi-Solved, Multiple solutions

Problem

Input: nums = [1,2,3,4,5,6,7], k = 3
Output: [5,6,7,1,2,3,4]

Solution

There are at least 4 solutions:

  • brute force
  • use extra space
  • using cyclic replacement?
  • 2 pass reversal

2 pass reversal approach

{% highlight python %}

def rotate(self, nums: List[int], k: int) -> None:

if not nums: return
if len(nums)==1: return

# in case k>len(nums)
if k>len(nums):
    k = k%len(nums)

def reverse(nums, start, end):
    
    while start<end:
        tmp = nums[start]
        nums[start] = nums[end]
        nums[end] = tmp
    
        start+=1
        end-=1


reverse(nums, 0, len(nums)-1)
reverse(nums, 0, k-1)
reverse(nums, k, len(nums)-1)

{% endhighlight %}

image1