def rotate_array(nums: List[int], k: int) -> None:
n = len(nums)
k = k % n # for k > n
start = 0
count = 0
while count < n:
curr = start
storage = nums[curr]
while True:
curr = (curr + k) % n
nums[curr], storage = storage, nums[curr]
count += 1
if start == curr:
break
start += 1