1.注意:这题也是要求in-place实地修改。
2.Python版本解答:(就一句话,大写的服气~~~)
class Solution(object):
def rotate(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: None Do not return anything, modify nums in-place instead.
"""
if k==0:
pass
nums[:]=nums[len(nums)-k:]+nums[:len(nums)-k]
3.Java版本解答:(Step by step,一个循环位移一位,共k轮循环)
version 1.容易理解,但是Time Limit Exceeded
class Solution {
public void rotate(int[] nums, int k) {
int temp,previous;
for(int i=0;i<k;k++){
previous=nums[nums.length-1];
for(int j=0;j<nums.length;j++){
temp=nums[j];
nums[j]=previous;
previous=temp;
}
}
}
}
version 2.新建一个数组a,最后再赋值给原数组nums[ ]
class Solution {
public void rotate(int[] nums, int k) {
int[] a=new int[nums.length];
for(int i=0;i<nums.length;i++){
a[(k+i)%nums.length]=nums[i];
}
for(int i=0;i<nums.length;i++){
nums[i]=a[i];
} #注意此处必须要一一赋值,直接写nums=a不可以,那就不算in-place了。
}
}