class Solution:
def rotateArray(self, nums, k):
n = len(nums)
k = k % n # Normalize k to handle k > n
if k == 0:
return
def reverse(start, end):
while start < end:
nums[start], nums[end] = nums[end], nums[start]
start += 1
end -= 1
# Step 1: Reverse the entire array
reverse(0, n-1)
# Step 2: Reverse the first k elements
reverse(0, k-1)
# Step 3: Reverse the last n-k elements
reverse(k, n-1)
Y2xhc3MgU29sdXRpb246CiAgICBkZWYgcm90YXRlQXJyYXkoc2VsZiwgbnVtcywgayk6CiAgICAgICAgbiA9IGxlbihudW1zKQogICAgICAgIGsgPSBrICUgbiAgIyBOb3JtYWxpemUgayB0byBoYW5kbGUgayA+IG4KICAgICAgICBpZiBrID09IDA6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIAogICAgICAgIGRlZiByZXZlcnNlKHN0YXJ0LCBlbmQpOgogICAgICAgICAgICB3aGlsZSBzdGFydCA8IGVuZDoKICAgICAgICAgICAgICAgIG51bXNbc3RhcnRdLCBudW1zW2VuZF0gPSBudW1zW2VuZF0sIG51bXNbc3RhcnRdCiAgICAgICAgICAgICAgICBzdGFydCArPSAxCiAgICAgICAgICAgICAgICBlbmQgLT0gMQogICAgICAgIAogICAgICAgICMgU3RlcCAxOiBSZXZlcnNlIHRoZSBlbnRpcmUgYXJyYXkKICAgICAgICByZXZlcnNlKDAsIG4tMSkKICAgICAgICAjIFN0ZXAgMjogUmV2ZXJzZSB0aGUgZmlyc3QgayBlbGVtZW50cwogICAgICAgIHJldmVyc2UoMCwgay0xKQogICAgICAgICMgU3RlcCAzOiBSZXZlcnNlIHRoZSBsYXN0IG4tayBlbGVtZW50cwogICAgICAgIHJldmVyc2Uoaywgbi0xKQ==