题解 | #旋转数组,三次翻转#

旋转数组

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

import java.util.*;


public class Solution {
    /**
     * 旋转数组
     * @param n int整型 数组长度
     * @param m int整型 右移距离
     * @param a int整型一维数组 给定数组
     * @return int整型一维数组
     */
    public int[] solve (int n, int m, int[] a) {
        if(n <= 1 || m == 0 || m % n == 0) return a ;
        m = m % n ;
        //[1,2,3,4,5]  m=2
        reverse(a , 0 , n - 1) ;//[5,4,3,2,1]
        reverse(a , 0 , m - 1) ;//[4,5,3,2,1]
        reverse(a , m , n - 1) ;//[4,5,1,2,3]
        return a ;
    }
    public void reverse(int[] arr , int s , int e) {
        int i = s ;
        int j = e ;
        while(i < j) {
            int t = arr[i] ;
            arr[i] = arr[j] ;
            arr[j] = t ;
            i ++ ;
            j -- ;
        }
    }
}

一个菜鸟的算法刷题记录 文章被收录于专栏

分享一个菜鸟的成长记录

全部评论

相关推荐

用微笑面对困难:只要你保证项目和获奖都是真的就行尤其是“对战,总负责人”啊这些套职,基本上队员,打杂的都这么写
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务