第一种方法:将最后一位赋值给中间变量,然后将前一位赋值给后一位,依次类推。此种方法效率较低,耗时长。
class Solution:
def rotate(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: void Do not return anything, modify nums in-place instead.
"""
i = 1;
while i <= k :
temp = nums[len(nums) - 1];
for j in range(0,len(nums)-1):
nums[len(nums) - j - 1] = nums[len(nums) - j - 2];
nums[0] = temp;
i = i + 1;
print(nums);
第二种方法:运用python的切片,数组形式可以直接相加减。空间复杂度为O(1)的原地算法,效率很高。
class Solution:
def rotate(self, nums, k):
nums_len = len(nums)
# print(nums[nums_len - k:])
# print(nums[:nums_len - k])
nums[:] = nums[nums_len - k :] + nums[:nums_len - k] #数组切片可以直接加减,放在一起
print(nums);