zoukankan      html  css  js  c++  java
  • Rotate Array

    问题来源:https://leetcode.com/problems/rotate-array/

    /**
     * 
     * <p>
     * ClassName RotateArray
     * </p>
     * <p>
     * Description Rotate an array of n elements to the right by k steps.
     * 
     * For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is rotated to [5,6,7,1,2,3,4].
     * 
     * Note: Try to come up as many solutions as you can, there are at least 3 different ways to solve this problem.
     * 
     * [show hint]
     * 
     * Related problem: Reverse Words in a String II
     * </p>
     * 
     * @author TKPad wangx89@126.com
     *         <p>
     *         Date 2015年3月18日 下午5:18:17
     *         </p>
     * @version V1.0.0
     *
     */
    public class RotateArray {
        public void rotate(int[] nums, int k) {
            k = k % nums.length;// 取余。由于一个循环,事实上数组是不变的
            reverse(nums, 0, nums.length - k);
            reverse(nums, nums.length - k, nums.length);
            reverse(nums, 0, nums.length);
        }
    
        public void reverse(int[] nums, int start, int end) {
            if (nums.length == 1) {
                return;
            }
            if (start == 0) {
                for (int i = start; i < (end + start) / 2; i++) {
                    int temp = nums[i];
                    nums[i] = nums[end - i - 1];
                    nums[end - i - 1] = temp;
                }
            } else {
                for (int i = start; i < (end + start) / 2; i++) {
                    int temp = nums[i];
                    nums[i] = nums[end + start - i - 1];
                    nums[end + start - i - 1] = temp;
                }
            }
        }
    
        public void print(int[] nums) {
            for (int i = 0; i < nums.length; i++) {
                System.out.print(nums[i] + "    ");
            }
            System.out.println();
        }
    
        public static void main(String[] args) {
            // 測试数据集 [-1],2
            // 測试数据集 [1,2],3
            // 測试数据集 [1,2,3,4,5,6,7],3
            int[] i = new int[] { 1, 2, 3, 4, 5, 6, 7 };
            new RotateArray().rotate(i, 3);
        }
    }
    
  • 相关阅读:
    sql server紧急状态下登录脚本
    将SQL for xml path('')中转义的字符正常显示
    SQL查询表中的有那些索引
    Set ARITHABORT Option设置为ON
    检测重编译
    计划指南
    sql server 清理缓存
    变量绑定
    分析及动态采样
    Hint
  • 原文地址:https://www.cnblogs.com/lytwajue/p/7119470.html
Copyright © 2011-2022 走看看