关于旋转数组的算法

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

分析:一开始想的方向错了,想成两个元素的交换,其实数组整体向右移动,简单来说,高位被低位代替,一开始想着用for循环,从小到大循环,发现不通,必须从大到小,数据才不会被覆盖。

 public static void rotate(int[] nums ,int k){
         while(k>0){
         //记录最高位数据
         int high = nums[nums.length-1];
         for(int i=nums.length-2;i>=0;i--){
            nums[i+1]=nums[i];
             }
         nums[0]=high;
         k--;
         }
     }

猜你喜欢

转载自blog.csdn.net/weixin_40787587/article/details/81540167