当前位置: 首页 > article >正文

算法训练营——day4螺旋矩阵

1 螺旋矩阵II-力扣59(中等)

1.1 题目:螺旋矩阵II

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。

示例 1:

输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]

示例 2:

输入:n = 1
输出:[[1]]

提示:

  • 1 <= n <= 20

1.2 编程模拟思路解法

首先避免起始末尾节点被重复访问,所以我们采取左开右闭 [ i , j ) 区间来进行模拟,注解中以第一圈为例,后面循环中圈内节点数减少,但是核心思路不变。

class Solution {
    public int[][] generateMatrix(int n) {
        int[][] ret = new int[n][n];// 二维数组存储
        int startx = 0, starty = 0;// 定义起始行和列开始位置
        int loop = 1;
        int count = 1;// 填入的数字
        int offset = 1;

        // 采用左闭右开区间[i,j)
        while (loop <= n / 2) {
            int i = startx;
            int j = starty;
            // 给第一圈的第一行赋值
            for (; j < n - offset; j++) {
                ret[i][j] = count++;
            }
            // 第一圈的最后一列赋值
            for (; i < n - offset; i++) {
                ret[i][j] = count++;
            }
            // 第一圈的最后一行赋值
            for (; j > starty; j--) {
                ret[i][j] = count++;
            }
            // 第一圈第一列赋值
            for (; i > startx; i--) {
                ret[i][j] = count++;
            }
            startx++;
            starty++;
            offset++;
            loop++;
        }
        if (n % 2 == 1) {
            ret[startx][starty] = count;
        }
        return ret;

    }
}


http://www.kler.cn/a/291501.html

相关文章:

  • Jmeter 如何导入证书并调用https请求
  • 小鹏汽车大数据面试题及参考答案
  • Chrome 浏览器 131 版本新特性
  • Unity 编辑器下 Android 平台 Addressable 加载模型粉红色,类似材质丢失
  • TON商城与Telegram App:生态融合与去中心化未来的精彩碰撞
  • RPA真的是人工智能吗?
  • 数据结构---双向链表---循环链表---栈
  • 如何用pytorch进行图像分类
  • 测试基础|记一次CPU冲高的排查过程!
  • Lua 代码编码规范
  • mybatisplus使用OptimisticLockerInnerInterceptor实现版本号乐观锁
  • 七月刚入职字节跳动的测试开发面试题,附答案
  • SpringCloud Alibaba】(十三)学习 RocketMQ 消息队列
  • Linux内核编程(十五)网络设备驱动
  • Transforms的常见用法
  • ARM的寄存器组织
  • 深度学习--机器学习相关(1)
  • 游戏:科技强国的璀璨星芒与经济增长新动力
  • Linux中的echo命令
  • LSPosed 模块开发入门和踩的坑
  • 游戏语音交流,求推荐第三方IM服务?增加玩家体验!
  • 如何阅读PyTorch文档及常见PyTorch错误
  • MLM:多模态大型语言模型的简介、微调方法、发展历史及其代表性模型、案例应用之详细攻略
  • JavaEE(2):前后端项目之间的交互
  • King’s LIMS 实验室信息管理系统:引领实验室数字化转型的创新力量
  • plc1200 weiluntong001