题解 | #向左移动牛群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;
    }
}

全部评论

相关推荐

2024-12-26 13:00
太原理工大学 Java
会飞的猿:简历没啥大问题啊,感觉是缺少了实习经历。多投投先找个中小厂过渡一下吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务