189 旋转数组

189 旋转数组

我们采用数组翻转例如:1,2,3,4,5 k=2,结果应为4,5,1,2,3
首先全部翻转得到5,4,3,2,1
然后在翻转数组第一位到底k位得:4,5,3,2,1
最后翻转数组第k位到最后一位得:4,5,1,2,3

class Solution {
    public void rotate(int[] nums, int k) {
        k%=nums.length;//可能k大于数组的大小
        replace(nums,0,nums.length-1);
        replace(nums,0,k-1);
        replace(nums,k,nums.length-1);
    }

    public void replace(int[] nums,int left,int right){
        while(right>left){
            int temp;
            temp=nums[left];
            nums[left]=nums[right];
            nums[right]=temp;
            left+=1;
            right-=1;

        }
    }
}
上一篇:leetcode-189. 旋转数组


下一篇:每日leetcode-数组-189. 旋转数组