189. Rotate Array
Array Rotation by Repeated Right Shift (Brute Force Approach)
func rotate(nums []int, k int) {
for i := 0; i < k; i++ {
last := nums[len(nums)-1]
for i := len(nums) - 1; i > 0; i-- {
nums[i] = nums[i-1]
}
nums[0] = last
}
}- Time Complexity:
O(n x k) - Space Complexity:
O(1)
Array Rotation Using Reversal Algorithm (Optimal Approach)
func rotate(nums []int, k int) {
n := len(nums)
k %= n
reverse(nums, 0, n - 1)
reverse(nums, 0, k - 1)
reverse(nums, k, n - 1)
}
func reverse(nums []int, start int, end int) {
for start < end {
nums[start], nums[end] = nums[end], nums[start]
start++
end--
}
}- Time Complexity:
O(n) - Space Complexity:
O(1)

