题解 | #旋转数组#

旋转数组

https://www.nowcoder.com/practice/e19927a8fd5d477794dac67096862042

import java.util.*;


public class Solution {
   
//    从1开始,n是数组长度,m是移动数
// 像后面整体移动几个就相当于,反转 移动数与数组长度 到前面
    public int[] solve (int n, int m, int[] a) {
        // 进行三次反转,直到反转成目标样
        // 第一次整体反转,第二次将左边m个数反转,
        // 第三次将右边n-m个数反转

        // 将移动次数取与,数组长度可能小于移动数
        m = m%n;
        reverse(a,0,n-1);
        reverse(a,0,m-1);
        reverse(a,m ,n-1);
        
        return a;
    }
    //反转函数
    public void reverse(int[] nums, int start, int end){
        while(start < end){
            swap(nums, start++, end--);
        }
    }

    public void swap(int[] num,int start,int end){

        int tmp = num[start];
        num[start] = num[end];
        num[end] = tmp;
    }
}

全部评论

相关推荐

01-23 19:12
门头沟学院 Java
榨出爱国基因:你还差 0.1% 就拿到校招礼盒,快叫朋友给你砍一刀吧
投递拼多多集团-PDD等公司9个岗位
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务