您的位置 首页 JAVA(2017)

LeetCode – 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].

Note:
Try to come up as many solutions as you can, there are at least 3 different ways to solve this problem.

这道题很有趣,注意k可能是大于n的,思路:

  1. 先倒置
  2. 倒置0-k
  3. 倒置后半部分

类似题目:Reverse Words in a String II

public class Solution {
    public void rotate(int[] nums, int k) {
        while(k>nums.length){
            k -= nums.length;
        }
            
        rev(nums,0,nums.length-1);
        rev(nums,0,k-1);
        rev(nums,k,nums.length-1);
        

    }
    public void rev(int[] nums,int start,int end){
        while(start<end){
            int temp = nums[start];
            nums[start] = nums[end];
            nums[end] = temp;
            start ++;
            end --;
        }
    }
}
看完了?留个评分呗?
[0人评了分,平均: 0/5]

本站原创文章皆遵循“署名-非商业性使用-相同方式共享 3.0 (CC BY-NC-SA 3.0)”。转载请保留以下标注:

原文来源:《LeetCode – 189. Rotate Array》

发表评论

邮箱地址不会被公开。

返回顶部