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 --;
        }
    }
}

喜欢的话订阅一个呗~第一时间收到文章更新哟~

发表评论

电子邮件地址不会被公开。