给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。

方法1:开辟新的空间但是单循环一次性移位

class ution {
    public void rotate1(int[] nums, int k) {
        int [] mm=new int[nums.length];
        for(int i=0;i

方法2:双重循环,一个个移

/**
* 双重循环
* 时间复杂度:O(kn)
* 空间复杂度:O(1)
*/

class ution {
    public void rotate1(int[] nums, int k) {
        int n=nums.length;
        k=k%n;
        for(int i=0;i0;j--){
               nums[j]=nums[j-1];
           }
            nums[0] = temp;
        }
        for(int j=0;j

你可能感兴趣的:(给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。)