LC 0189 [M] Rotate Array - ALawliet/algorithms GitHub Wiki

T: O(n)
S: O(1)
class Solution(object):
    def rotate(self, nums, k):
        k = k % len(nums)
        n = len(nums) - 1
        
        def reverse(l, r):
            while l < r:
                nums[l], nums[r] = nums[r], nums[l]
                l += 1 ; r -= 1

        # A-B-C
        reverse(0, n - k) # A-B
        reverse(n - k + 1, n) # B-C
        reverse(0, n) # A-C