码迷,mamicode.com
首页 > 其他好文 > 详细

Rotate Array

时间:2017-07-05 10:01:12      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:void   return   oid   else   amp   pop   rip   ring   dcl   

问题来源: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);
    }
}

Rotate Array

标签:void   return   oid   else   amp   pop   rip   ring   dcl   

原文地址:http://www.cnblogs.com/lytwajue/p/7119470.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!