qidao123.com技术社区-IT企服评测·应用市场

标题: [Java][Leetcode simple] 189. 轮转数组 [打印本页]

作者: 玛卡巴卡的卡巴卡玛    时间: 7 天前
标题: [Java][Leetcode simple] 189. 轮转数组
借助辅助数组

  1.   借助一个辅助数组tmp保存后面k个元素
  2.   然后逆序循环,使用数组前面n-k个元素覆盖最后到后面
  3.   最后把前k个元素从tmp中拿回来
复制代码
  1. public void rotate(int[] nums, int k) {
  2.         int len = nums.length;
  3.         k = k % len;
  4.         int[] Ra = new int[len];
  5.         int cnt = 0;
  6.         for (int i = len-k ; i < len; i++) {
  7.             Ra[cnt++] = nums[i];
  8.         }
  9.         for (int i = len-1; i >=0 ; i--) {
  10.             if(i>=k){
  11.                 nums[i] = nums[i-k];
  12.             }else{
  13.                 nums[i] = Ra[i];
  14.             }
  15.         }
  16.     }
复制代码
借助数组旋转

先团体旋转
然后0~k-1旋转
最后k-n-1旋转,即可得到目标数组
  1.     public void rotate2(int[] nums, int k) {
  2.         int len = nums.length;
  3.         k = k % len;
  4.         reverse(nums, 0, len-1);
  5.         reverse(nums, 0, k-1);
  6.         reverse(nums, k, len-1);
  7.     }
  8.     public void reverse(int[] nums, int start, int end) {
  9.        while (start < end) {
  10.            int temp = nums[start];
  11.            nums[start] = nums[end];
  12.            nums[end] = temp;
  13.            start++;
  14.            end--;
  15.        }
  16.     }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4