题解 | #向左移动牛群II#
向左移动牛群II
https://www.nowcoder.com/practice/2467ddd80a2942abbaa752f3c874dd79
知识点:二维数组 模拟
思路:给定数组大小,每次向左和向上移动1次,模拟即可
矩阵大小 = n ,向左移动k就是i+n-k
如何理解:
1.向右移动其实就是 (i + k)%n 这好理解
2.向左移动,想象 n =3 数组,起始点+n,比如1 2 3 4 5 6,我们就是从456开始左移,最后取余n
也就是(i+n-k)%n
3.数组计数规则 i*n+j+1
但这里别弄混了一点,因为是左移:所以我们这里想要的值是我们左右过去的,那么那个值则需要计算右移到我们这
编程语言:java
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @param k int整型 * @return int整型二维数组 */ public int[][] rotateII (int n, int k) { // write code here int[][] nums = new int[n][n]; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) { //计算右移 int ii = (i + k) % n; int jj = (j + k) % n; nums[i][j] = n * ii + jj + 1; } return nums; } }