leetcode hot 16

解题思路:最简单的方法就是浪费空间的方法。还有一种巧法,先将整个数组反转,然后将需要移动的后面的k(如果超过数组长度就取余)个位置的数反转,最后将剩下的数反转。

class Solution {
    public void rotate(int[] nums, int k) {
        k = k%nums.length;
        reverse(nums,0,nums.length-1);
        reverse(nums,0,k-1);
        reverse(nums,k,nums.length-1);
    }
    public void reverse(int[] nums,int start,int end){
        while(start<end){
            int tmp = nums[start];
            nums[start]=nums[end];
            nums[end]=tmp;
            start++;
            end--;
        }
        return;
    }
}
posted @ 2025-03-03 19:05  kukudev  阅读(5)  评论(0)    收藏  举报