题目描述如下:
Rotate an array of n elements to the right by k steps.
For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7]
is
rotated to [5,6,7,1,2,3,4]
.
解法1:
O(n) time, O(n) space
self.nums = nums[-k:] + nums[:-k]
for i in range(len(self.nums)):
nums[i] = self.nums[i]
解法二:
O(n) time, o(1) space
self.reverse(nums, 0, n - 1)
self.reverse(nums, 0, k - 1)
self.reverse(nums, k, n - 1)
def reverse(self, nums, start, end):
while start < end:
temp = nums[start]
nums[start] = nums[end]
nums[end] = temp
start += 1
end -= 1
解法三:
将数组中元素右移