189. Rotate Array

来源:互联网 发布:淘宝运营专员岗位职责 编辑:程序博客网 时间:2024/04/29 04:34

189. Rotate Array

  • 题目描述: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].

  • 思路:先将整个数组转置,之后对数组的0到k位置转置,之后再对数组的k到n进行转置,如对题目中的例子[1,2,3,4,5,6,7],先对整个数组转置,转置后的结果为[7,6,5,4,3,2,1],之后对数组的0到3处进行转置,转置后的结果为[5,6,7,4,3,2,1],之后再对数组中的k到n处位置转置,转置后的结果为[5,6,7,1,2,3,4]。

  • 代码

    package Array;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class Solution {    public  void rotate(int[] nums, int k) {        k %= nums.length;        if (k == 0 || k == nums.length) {            return;        }        reverse(nums, 0, nums.length-1);        reverse(nums, 0, k - 1);        reverse(nums,k,nums.length-1);    }//    对数组转置    private void reverse(int []nums,int start,int end){        while (start <= end) {            int temp = nums[start];            nums[start] = nums[end];            nums[end] = temp;            start++;            end--;        }    }}