zoukankan      html  css  js  c++  java
  • 189 Rotate Array 旋转数组

    将包含 n 个元素的数组向右旋转 k 步。
    例如,如果  n = 7 ,  k = 3,给定数组  [1,2,3,4,5,6,7]  ,向右旋转后的结果为 [5,6,7,1,2,3,4]。
    注意:
    尽可能找到更多的解决方案,这里最少有三种不同的方法解决这个问题。

    详见:https://leetcode.com/problems/rotate-array/description/

    Java实现:

    方法一:

    class Solution {
        public void rotate(int[] nums, int k) {
            int n=nums.length;
            k%=n;
            reverseArray(nums,0,n-1);
            reverseArray(nums,0,k-1);
            reverseArray(nums,k,n-1);
        }
        private void reverseArray(int[] nums,int start,int end){
            while(start<end){
                nums[start]=nums[start]+nums[end];
                nums[end]=nums[start]-nums[end];
                nums[start]=nums[start]-nums[end];
                ++start;
                --end;
            }
        }
    }
    

    方法二:

    class Solution {
        public void rotate(int[] nums, int k) {
            int n=nums.length;
            int[] copy=Arrays.copyOf(nums,n);
            for(int i=0;i<n;++i){
                nums[(i+k)%n]=copy[i];
            }
        }
    }

    方法三:

    class Solution {
        public void rotate(int[] nums, int k) {
            int n = nums.length;
            int start = 0;
            while (n != 0 && (k %= n) != 0) {
                for (int i = 0; i < k; ++i) {
                    swap(nums, i + start, n - k + i + start);
                }
                n -= k;
                start += k;
            }
        }
    
        private void swap(int[] nums, int i, int j) {
            int tmp = nums[i];
            nums[i] = nums[j];
            nums[j] = tmp;
        }
    }

    参考:https://www.cnblogs.com/grandyang/p/4298711.html

  • 相关阅读:
    Linux之mysql的重新安装
    prometheus监控采集数据promSql
    安装grafana
    prometheus server主配置文件prometheus.yml
    【Java拾遗】不可不知的 Java 序列化
    Centos7 openssh 离线升级8.4
    web for pentester sqli
    web for pentester xss
    ESXI 安装脚本
    nginx 499状态码排查
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8745278.html
Copyright © 2011-2022 走看看