题解 | #旋转数组#

旋转数组

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

package main

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 旋转数组
 * @param n int整型 数组长度
 * @param m int整型 右移距离
 * @param a int整型一维数组 给定数组
 * @return int整型一维数组
 */
//三次翻转的方法;把移动->翻转
func solve(n int, m int, a []int) []int {
	// write code here
	m = m % n
	//三次翻转
	for i, j := 0, n-1; i < j; i, j = i+1, j-1 {
		a[i], a[j] = a[j], a[i]
	}
	//第二次翻转以m为界限
	for i, j := 0, m-1; i < j; i, j = i+1, j-1 {
		a[i], a[j] = a[j], a[i]
	}
	//第三次翻转:m右边的部分
	for i, j := m, n-1; i < j; i, j = i+1, j-1 {
		a[i], a[j] = a[j], a[i]
	}
	return a
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务