← Back to LeetCode Notes

189. Rotate Array

medium · array · math · two-pointers · solved 2026.08.02 · 10 sec read

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.