zoukankan      html  css  js  c++  java
  • leetcode-189-旋转数组

    问题:

    package com.example.demo;
    
    import sun.security.util.Length;
    
    public class Test189 {
    
        /**
         * 方法一:暴力解法
         */
        public void rotate(int[] nums, int k) {
    
            for (int i = 0; i < k; i++) {
                int pre = nums[nums.length - 1];
                for (int j = 0; j < nums.length; j++) {
                    int temp = nums[j];
                    nums[j] = pre;
                    pre = temp;
                }
            }
        }
    
        /**
         * 方法二:使用额外数组法
         */
        public void rotate1(int[] nums, int k) {
            int len = nums.length;
            int[] res = new int[len];
            for (int i = 0; i < len; i++) {
                res[(i + k) % len] = nums[i];
            }
            for (int i = 0; i < len; i++) {
                nums[i] = res[i];
            }
        }
    
        /**
         * 方法三:三步翻转法 ********
         */
        public void rotate2(int[] nums, int k) {
            int len = nums.length;
            //对k重新复制,放置数组越界,当len = 4时,k = 5和 k = 1的效果相同
            k = k % len;
            reverseNums(nums, 0, len - 1);
            reverseNums(nums, 0, k - 1);
            reverseNums(nums, k, len - 1);
        }
    
        /**
         * 交换指定位置的值
         */
        private void reverseNums(int[] nums, int left, int right) {
            while (left <= right) {
                int temp = nums[left];
                nums[left] = nums[right];
                nums[right] = temp;
                left++;
                right--;
            }
        }
    
        private void swapArr(int[] nums, int pointer, int cur) {
            int temp = nums[pointer];
            nums[pointer] = nums[cur];
            nums[cur] = temp;
        }
    
        public static void main(String[] args) {
            Test189 t = new Test189();
            int[] arr = {1, 2, 3, 4, 5, 6};
            t.rotate2(arr, 8);
            for (int i : arr) {
                System.out.print(i + " ");
            }
        }
    }
  • 相关阅读:
    pat1111-1120
    pat1101-1110
    pat1091-1100
    pat1081-1090
    pat1071-1080
    pat1061-1070
    2017华为软件精英挑战赛总结
    pat1051-1060
    【转】WPF中PasswordBox控件的Password属性的数据绑定
    Python学习-41.Python中的断言
  • 原文地址:https://www.cnblogs.com/nxzblogs/p/11268848.html
Copyright © 2011-2022 走看看