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

算法训练营——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.dtcms.com/a/12360.html

相关文章:

  • mybatisplus查询指定字段
  • Nginx 负载均衡+高可用 集群部署(Keepalived+LVS DR模式)
  • MongoDB基本语法
  • PowerShell脚本编写:自动化Windows开发工作流程实例介绍
  • Python 中考虑 concurrent.futures 实现真正的并行计算
  • C++学习笔记(8)
  • 【Unity-Lua】音乐播放器循环滚动播放音乐名
  • 【SpringBoot】使用Nacos服务注册发现与配置管理
  • MySQL库的操作
  • C++入门(04)命令行窗口
  • Golang | Leetcode Golang题解之第393题UTF-8编码验证
  • c语言和c++的区别
  • 网络编程之-UDP详解
  • 什么是 Java?Java 的主要特点有哪些?
  • 【WPF】WPF学习之【二】布局学习
  • leetcode 23.合并k个升序链表
  • JVM系列(十) -垃圾收集器介绍
  • 面试题.04
  • 【Python】数据可视化之分类图
  • 【Datawhale X 李宏毅苹果书 AI夏令营】《深度学习详解》Task3 打卡
  • EvoSuite使用总结
  • 是谁还不会flink的checkpoint呀~
  • Java传输本地目录到远程服务器
  • WSL 在 Windows 上删除已经安装的 Ubuntu | WSL 再次重装 Ubuntu | cv2.imshow() 弹窗支持
  • Java语言的Netty框架+云快充协议1.5+充电桩系统+新能源汽车充电桩系统源码
  • 基于FreeRTOS的STM32多功能手表
  • Java Spring Boot 项目中的密码加密与验证开发案例手册
  • Redis集群
  • C++11 ---- 右值引用和移动语义
  • SpringBoot依赖之Spring Boot DevTools热部署开发增效工具