diff --git a/rotate-array/sol.go b/rotate-array/sol.go new file mode 100644 index 0000000..d41dec7 --- /dev/null +++ b/rotate-array/sol.go @@ -0,0 +1,19 @@ +package main + +// Time: O(n) +// Space: O(1) (original array modified) +func rotate(nums []int, k int) { + c, a, l, idx, num := 0, 0, len(nums), 0, nums[0] + for c != l { + if idx == a && c != 0 { + a++ + idx = a + num = nums[idx] + } + new_idx := (idx + k) % l + old_num := nums[new_idx] + nums[new_idx] = num + idx, num = new_idx, old_num + c++ + } +}