Rotate Array
LeetCode 189 · View on LeetCode
Rotate an array to the right by k steps. The three-reverse trick does it in O(1) extra space: reverse the whole array, reverse the first k, then reverse the rest.
def rotate(nums: list[int], k: int) -> None:
k %= len(nums)
nums.reverse()
nums[:k] = nums[:k][::-1]
nums[k:] = nums[k:][::-1]
if __name__ == '__main__':
a = [1, 2, 3, 4, 5, 6, 7]
rotate(a, 3)
print(a) # [5, 6, 7, 1, 2, 3, 4]
b = [-1, -100, 3, 99]
rotate(b, 2)
print(b) # [3, 99, -1, -100]