189. Rotate Array
View on LeetCode ↗
C++
class Solution {public: void rotate(vector<int>& nums, int k) { if (nums.size() <= 1) { return; // if 0 or 1 element, no change is made for any k } k %= nums.size(); // make sure k wraps around, does not overflow // the array. reverse(nums, 0, nums.size() - 1); // first reverse entire array reverse(nums, 0, k - 1); // reverse the first k elements now that they are // in the right place reverse(nums, k, nums.size() - 1); // then do the same reverse of the next part. // math identity is that reverse(AB) = reverse(B) + reverse(A) // similar to transpose of two vectors, say (AB)^T = B^T A^T // seam: boundary is at n-k before the global reverse, at k after. } void reverse(vector<int>& nums, int l, int r) { while (l < r) { swap(nums[l], nums[r]); l++; r--; } }};
this is not working, i need to fix this.