题目描述
题解一
采用翻转的方法 参考编程珠玑第二章读书笔记_ganggang的博客-CSDN博客 其中2.3基本操作的威力
以示例1为例 nums [1,2,3,4,5,6,7] k 3
1 对nums[0:len(nums)-k]部分即nums[0:4]进行翻转1 2 3 4- 4 3 2 1
2 对nums[len(nums)-k:]部分进行翻转5 6 7- 7 6 5
3 对前两步处理之后的nums[0:]进行翻转 4 3 2 1 7 6 5- 5 6 7 1 2 3 4
其中需要注意 如果移动位置k len(nums) 用k除以len(nums)取余。
class Solution(object): def rotate(self, nums, k): length len(nums) nums[0:length-k] list(reversed(nums[0:length-k])) nums[length-k:] list(reversed(nums[length-k:])) nums list(reversed(nums)) return nums
题解二 需要额外空间
把原数组nums看作两部分 交换两部分的位置。
class Solution(object): def rotate(self, nums, k): length len(nums) k k%length nums1 nums[0:length-k] nums2 nums[length-k:] nums[0:k] nums2 nums[k:] nums1 return nums



