59-代码随想录--数组--螺旋矩阵

news2024/10/7 12:19:28

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

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

示例:

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

模拟顺时针画矩阵的过程:

  • 填充上行从左到右
  • 填充右列从上到下
  • 填充下行从右到左
  • 填充左列从下到上

由外向内一圈一圈这么画下去。

public class Matrix {
    public int[][] generateMatrix(int n) {
        int loop = 0;  // 控制循环次数
        int[][] res = new int[n][n];
        int start = 0;  // 每次循环的开始点(start, start)
        int count = 1;  // 定义填充数字
        int i, j;

        while (loop++ < n / 2) { // 判断边界后,loop从1开始
            // 模拟上侧从左到右
            for (j = start; j < n - loop; j++) {
                res[start][j] = count++;
            }

            // 模拟右侧从上到下
            for (i = start; i < n - loop; i++) {
                res[i][j] = count++;
            }

            // 模拟下侧从右到左
            for (; j >= loop; j--) {
                res[i][j] = count++;
            }

            // 模拟左侧从下到上
            for (; i >= loop; i--) {
                res[i][j] = count++;
            }
            start++;
        }

        if (n % 2 == 1) {
            res[start][start] = count;
        }

        return res;
    }

    public static void main(String[] args) {
        int n = 4;
        Matrix matrix = new Matrix();
        int[][] a = matrix.generateMatrix(n);

        // 输出生成的螺旋矩阵
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                System.out.print(a[i][j] + " ");
            }
            System.out.println();
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1004857.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电路电子技术1--关联参考方向及功率的计算

1.判断 电流由元件的低点位端流向高电位端的参考方向称为关联参考方向。() 考点&#xff1a;电流、电压的参考方向 解释&#xff1a;在一些复杂的电路中&#xff0c;往往不能预先确定某段电路上的电流、电压的实际方向&#xff0c;所以引进了 “关联参考方向”。为了能够解决问…

网工内推 | 运营商技术支持,数通基础扎实,最高17k

01 新华三技术有限公司 招聘岗位&#xff1a;运营商技术支持工程师 职责描述&#xff1a; 1、负责新华三产品产品和方案在运营商客户的日常运维和技术支持&#xff1b; 2、为运营商客户提供网上问题处理、业务变更支持&#xff1b; 3、负责对应运营商客户日常维系&#xff0…

RabbitMQ基础概念-02

RabbitMQ是基于AMQP协议开发的一个MQ产品&#xff0c; 首先我们以Web管理页面为 入口&#xff0c;来了解下RabbitMQ的一些基础概念&#xff0c;这样我们后续才好针对这些基础概念 进行编程实战。 可以参照下图来理解RabbitMQ当中的基础概念&#xff1a; 虚拟主机 virtual hos…

绝热量热法反应热测试过程中的温度和压力自动跟踪控制解决方案

摘要&#xff1a;现有的ARC加速量热仪普遍存在单热电偶温差测量误差大造成绝热效果不好&#xff0c;以及样品球较大壁厚造成热惰性因子较大&#xff0c;都使得ARC测量精度不高。为此本文提出了技术改进解决方案&#xff0c;一是采用多只热电偶组成的温差热电堆进行温差测量&…

Dynamic-TP入门初探

背景 在使用线程池的过程中&#xff0c;会出现一些痛点&#xff1a; 代码中创建了一个线程池&#xff0c;但是不知道那几个核心参数设置多少比较合适。凭经验设置参数值&#xff0c;上线后发现需要调整&#xff0c;改代码重新发布服务&#xff0c;非常麻烦。线程池相对开发人…

[N0wayback 2023春节红包题] happyGame python反编译

这个反编译的比较深 一&#xff0c;从附件的图标看是python打包的exe文件&#xff0c;先用pyinstxtractor.py 解包 生成的文件在main.exe_extracted目录下&#xff0c;在这里边找到main 二&#xff0c;把main改名为pyc然后加上头 这个头从包里找一个带头的pyc文件&#xff…

jvm永久代配置

1. 元空间介绍 在JDK1.7之前&#xff0c;HotSpot 虚拟机把方法区当成永久代&#xff08;方法区的落地实现&#xff09;来进行垃圾回收。 而从 JDK 1.8 开始&#xff0c;移除永久代&#xff0c;并把方法区移至元空间&#xff0c;它位于本地内存中&#xff0c;而不是虚拟机内存中…

文本生成图形功能,采用非WGS84坐标系的一定要注意

新版GIS数据转换器-矢量5.1和新版GIS数据转换器-栅格4.3已经上传微云&#xff0c;修正了一些BUG。需要请自行下载&#xff01; 文本生成图形功能,采用非WGS84坐标系的一定要选择输入坐标系&#xff0c;因为默认是WGS84&#xff0c;其它都不会软件自动填写&#xff0c;需要您手…

MYBATIS-PLUS入门使用、踩坑记录

转载&#xff1a; mybatis-plus入门使用、踩坑记录 - 灰信网&#xff08;软件开发博客聚合&#xff09; 首先引入MYBATIS-PLUS依赖&#xff1a; SPRING BOOT项目&#xff1a; <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus…

Git 基本操作【本地仓库与远程仓库的推送、克隆和拉取】

文章目录 一、Git简介二、Git的下载安装三、Git常规命令四、新建本地仓库五、本地分支操作六、Git远程仓库七、远程仓库克隆、抓取和拉取八、总结九、学习交流 一、Git简介 Git是分布式版本控制系统&#xff08;Distributed Version Control System&#xff0c;简称 DVCS&…

每日一博 - 闲聊SQL Query Execution Order

文章目录 SQL查询阶段关键字对结果集和性能的影响Flow小结 SQL查询阶段 在MySQL中&#xff0c;SQL查询的执行顺序可以分为以下几个阶段&#xff1a; 词法分析&#xff08;Lexical Analysis&#xff09;&#xff1a;在这个阶段&#xff0c;MySQL首先将SQL查询文本分解成词法单元…

算法通关18关 | 回溯模板如何解决排列和单词搜索问题

1. 排列问题 题目 LeetCode46 给定一个没有重复数字的序列&#xff0c;返回其所有可能的全排列&#xff0c; 思路 排列问题的思路同样使用与字母大小写全排列LeetCode784。 元素在使用过一次的时候&#xff0c;在图中第二层的时候&#xff0c;还会再被使用&#xff0c;所以能…

从实时监控到智能洞察:Grafana 和 CnosDB 的无限潜力

在今天的数字化世界中&#xff0c;监控系统对于维护应用程序和基础设施的稳定性至关重要。本文将介绍如何使用 Grafana 和 CnosDB 构建强大的监控体系&#xff0c;以便实时监视性能、发现问题并采取及时的措施。 CnosDB已正式上架Grafana插件市场 Grafana&#xff1a;开源监控和…

C++ 类的继承特性简单运用

封装一个名为Shape&#xff08;图形&#xff09;的父类&#xff0c;从父类中派生两个子类&#xff0c;分别为Circle&#xff08;圆形&#xff09;&#xff0c;Rect&#xff08;矩形&#xff09;&#xff0c;父类拥有两个子类的共同特性&#xff0c;面积和周长&#xff0c;两个子…

buuctf crypto 【密码学的心声】解题记录

1.打开可以看到一个曲谱 2.看到曲谱中的提示埃塞克码可以想到ascii码&#xff0c;没有八可以联想到八进制&#xff0c;而八进制又对应着三位的二进制&#xff0c;然后写个脚本就好了 oct [111,114,157,166,145,123,145,143,165,162,151,164,171,126,145,162,171,115,165,143,…

UG\NX二次开发 获取曲面上指定点位置的uv参数 UF_MODL_ask_face_parm

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 简介: UG\NX二次开发 获取曲面上指定点位置的uv参数 UF_MODL_ask_face_parm。 效果: 代码: #include "me.hpp"//parm[2] static void AskFaceUVP…

使用NSISW工具打包

程序使用VS2019Qt5.6.3开发工具编写。 已经有生成的32位Release文件夹 D:\work\版本\1.0.0\code\Release 文件夹内含&#xff1a; 关键是nsis.nsi 把nsis.nsi拖拽入下面的页面&#xff1a; 等待一段时间。打包成功。

随机密码生成器(Python)

随机密码生成器 想要生成一个随机密码&#xff0c;需要考虑下面两点&#xff1a; 1.字符集合 2.密码的位数 下面代码中引用了string模块和random模块&#xff0c;string.printable是string中的可打印字符&#xff0c;用strip函数首尾去掉空格&#xff1b;random模块用来取字符&…

JavaScript中循环遍历数组、跳出循环和继续循环

循环遍历数组 上个文章我们简单的介绍for循环&#xff0c;接下来&#xff0c;我们使用for循环去读取数据的数据&#xff0c;之前我们写过这样的一个数组&#xff0c;如下&#xff1a; const ITshareArray ["张三","二愣子","2033-1997","…

Java复习-多线程编程

多线程编程 解决并发访问的问题。 一. 继承 Thread 类实现多线程 1. 继承实现 继承thread类 class MyThread extends Thread{}覆写run主方法 多线程要执行的功能都应该在 run() 方法中定义。 class MyThread extends Thread { // 线程的主体类private String title;public…