【hot100】189轮转数组

一、思路

简单思路,使用将原数组移动到新数组后,然后把新数组移回原数组

进阶思路,使用数学特性,将数组整体反转,然后单独反转移动区间和剩余区间

二、记忆

1.以原数组为基准0移动到新数组和以新数组为基准0从原数组迁移两种思路和写法

2.数组复制函数System.arraycopy(num1,0,nums,0,n);

3.java中没有翻转数组的api,需要自己写,熟悉相关写法

三、代码

3.1额外数组

public void rotate(int[] nums,int k){
        int n = nums.length;
        int[] num1 = new int[n];//以新数组为基准0
        k=k%n;
        /*for(int i = n-k,j=0;i

3.2翻转数组

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);
    }

    private void reverse(int nums[],int begin,int end){
        while(begin

你可能感兴趣的:(HOT100,算法,数据结构)