object Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 旋转数组
* @param n int整型 数组长度
* @param m int整型 右移距离
* @param a int整型一维数组 给定数组
* @return int整型一维数组
*/
fun solve(n: Int,m: Int,a: IntArray): IntArray {
// write code here
return rotateArr(n, m, a)
}
fun rotateArr(n: Int, m: Int, a: IntArray): IntArray {
val r = m % n
a.reverse()
a.reverseRange(0, r-1)
a.reverseRange(r, n-1)
return a
}
// 局部反转
fun IntArray.reverseRange(s: Int, e: Int) {
if (s >= e) return
swap(s, e)
reverseRange(s + 1, e - 1)
}
fun IntArray.swap(x: Int, y: Int) {
val tmp = this[x]
this[x] = this[y]
this[y] = tmp
}
}