博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Leetcode】189. Rotate Array
阅读量:202 次
发布时间:2019-02-28

本文共 593 字,大约阅读时间需要 1 分钟。

题目地址:

给定一个数组 A A A,再给定一个数 k k k,要求将数组右移 k k k位。右移的意思是,每个数字向右挪动 k k k步,如果出界了,就依次再加到数组左边,继续挪。

先将 k k k模掉 A A A的长度,接着只需要三步翻转即可。代码如下:

public class Solution {
public void rotate(int[] nums, int k) {
k %= nums.length; reverse(nums, 0, nums.length - 1); reverse(nums, 0, k - 1); reverse(nums, k, nums.length - 1); } public void reverse(int[] nums, int i, int j) {
for (; i < j; i++, j--) {
int tmp = nums[i]; nums[i] = nums[j]; nums[j] = tmp; } }}

时间复杂度 O ( n ) O(n) O(n),空间 O ( 1 ) O(1) O(1)

转载地址:http://vocs.baihongyu.com/

你可能感兴趣的文章