旋转数组

简介: 旋转数组

示例1:
输入: nums = [1,2,3,4,5,6,7], k = 3

输出: [5,6,7,1,2,3,4]

解释:

向右轮转 1 步: [7,1,2,3,4,5,6]

向右轮转 2 步: [6,7,1,2,3,4,5]

向右轮转 3 步: [5,6,7,1,2,3,4]

示例2:
输入:nums = [-1,-100,3,99], k = 2

输出:[3,99,-1,-100]

解释:

向右轮转 1 步: [99,-1,-100,3]

向右轮转 2 步: [3,99,-1,-100]

解法1:巴黎铁塔反转反转再反转

class Solution {
    public void rotate(int[] nums, int k) {
        int length=nums.length;
        k%=length;
        reverse(nums,0,length-1-k);//先将数组全反转
        reverse(nums,length-k,length-1);//反转头k个
        reverse(nums,0,length-1);//反转k后面
    }
    public void reverse(int[] nums,int start,int end){
        while(start<end){
            int temp=nums[start];
            nums[start++]=nums[end];
            nums[end--]=temp;
        }
    }
}
目录
相关文章
|
6月前
|
算法 Python
leetcode-189:旋转数组
leetcode-189:旋转数组
32 0
|
C++
剑指offer 53. 数组中的逆序对
剑指offer 53. 数组中的逆序对
79 0
剑指offer 53. 数组中的逆序对
|
人工智能
1311:【例2.5】求逆序对
1311:【例2.5】求逆序对
133 0
解 旋转数组
解 旋转数组
逆序对问题
逆序对问题
74 0
|
算法
LeetCode 189. 旋转数组
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。
70 0
Day29——491.递增子序列、 46.全排列、47.全排列 II
Day29——491.递增子序列、 46.全排列、47.全排列 II
89 0
【LeetCode】第4天 - 977. 有序数组的平方 | 189. 旋转数组
【LeetCode】第4天 - 977. 有序数组的平方 | 189. 旋转数组
99 0
【LeetCode】第4天 - 977. 有序数组的平方 | 189. 旋转数组
|
算法 前端开发 程序员
「LeetCode」剑指Offer-51数组中的逆序对
「LeetCode」剑指Offer-51数组中的逆序对
204 0
「LeetCode」剑指Offer-51数组中的逆序对