LeetCode 189 Rotate Array (思维)

来源:互联网 发布:手机淘宝店铺怎么激活 编辑:程序博客网 时间:2024/06/05 22:33

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.

Hint:

Could you do it in-place with O(1) extra space?

public class Solution {        public void swap(int[] nums, int i, int j) {        int tmp = nums[i];        nums[i] = nums[j];        nums[j] = tmp;    }        public void reverse(int[] nums, int l, int r) {        while (l < r) {            swap(nums, l, r);            l ++;            r --;        }    }        public void rotate(int[] nums, int k) {        int n = nums.length;        if (n < 2) {            return;        }        k %= n;        reverse(nums, 0, n - 1);        reverse(nums, 0, k - 1);        reverse(nums, k, n - 1);    }}

题目分析:交换三次,空间O(1),时间O(n)

原创粉丝点击