Rotate Array

LeetCode 189 · View on LeetCode

Rotate an array right by k positions using three reverses. O(n) time, O(1) space. Reverse the whole array, then reverse the first k elements, then reverse the rest.

package main

import "fmt"

func rotate(nums []int, k int) {
	k %= len(nums)
	reverse := func(l, r int) {
		for l < r {
			nums[l], nums[r] = nums[r], nums[l]
			l++
			r--
		}
	}
	reverse(0, len(nums)-1)
	reverse(0, k-1)
	reverse(k, len(nums)-1)
}

func main() {
	nums := []int{1, 2, 3, 4, 5, 6, 7}
	fmt.Println(nums) // [1 2 3 4 5 6 7]

	rotate(nums, 3)
	fmt.Println(nums) // [5 6 7 1 2 3 4]
}
▶ Open Go Playground

Copy the code above and paste to run

© 2026 ByteLearn.dev. Free courses for developers. · Privacy