失败学专家诶♬ 2023-08-02 23:44 采纳率: 83.9%
浏览 2
已结题

关于#leetcode#的问题,如何解决?

关于leetcode螺旋矩阵的一道题解,有点不太明白,能否清晰的解释一下if语句里面的细节以及这个思路是怎么实现的

img

img


```java
 public int[][] generateMatrix(int n) {
        int[][] res = new int[n][n];
        //方向向量,初始向右
        int dx = 0;
        int dy = 1;

        //坐标
        int x = 0;
        int y = 0;

        for (int i = 1; i <= n * n; i++) {
            res[x][y] = i;
            //这个判断语句最巧妙
            //如果撞头就向右调转90度 先加n再对n取模这个操作能防止越界,省了很多判断语句
            if (res[(x + dx + n) % n][(y + dy + n) % n] != 0) {
                int tem = dy;
                dy = -dx;
                dx = tem;
            }
            x += dx;
            y += dy;
        }
        return res;
    }

```

  • 写回答

2条回答 默认 最新

  • threenewbee 2023-08-02 23:48
    关注

    dx和dy决定了下一个数字填写在哪里
    x=1 y=0,向右
    x=0 y=1,向下
    x=-1,y=0,向左
    x=0,y=-1,向上
    if语句是对是否应该换方向进行判断,也就是下一个格子是否不是0,有被填过。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月11日
  • 已采纳回答 8月3日
  • 创建了问题 8月2日

悬赏问题

  • ¥15 根据历年月数据,用Stata预测未来六个月汇率
  • ¥15 DevEco studio开发工具 真机联调找不到手机设备
  • ¥15 请教前后端分离的问题
  • ¥100 冷钱包突然失效,急寻解决方案
  • ¥15 下载honeyd时报错 configure: error: you need to instal a more recent version of libdnet
  • ¥15 距离软磁铁一定距离的磁感应强度大小怎么求
  • ¥15 霍尔传感器hmc5883l的xyz轴输出和该点的磁感应强度大小的关系是什么
  • ¥15 vscode开发micropython,import模块出现异常
  • ¥20 Excel数据自动录入表单并提交
  • ¥30 silcavo仿真,30分钟,只需要代码