https://leetcode.com/problems/rotate-array/
- Array manipulation
- Reverse
Rotate by reversing parts: reverse whole array, then reverse first k and last n-k segments (or use juggling algorithm).
O(n)
O(1)
class Solution {
private void reverse(int[] a, int l, int r) {
while (l < r) {
int t = a[l]; a[l++] = a[r]; a[r--] = t;
}
}
public void rotate(int[] nums, int k) {
k %= nums.length;
reverse(nums, 0, nums.length - 1);
reverse(nums, 0, k - 1);
reverse(nums, k, nums.length - 1);
}
}