螺旋矩阵(算法题)

文章目录

  • 螺旋矩阵
    • 解题思路

螺旋矩阵

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

示例 1:

img

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

解题思路

模拟这个螺旋过程。

  1. 初始化数组
  2. 确定循环次数,loop = n / 2;
  3. 循环时,奇数的中间值需要特殊处理
  4. startx,starty,用于确定每一次循环的起始点
  5. offset,用于减少每一次循环的此处
  6. mid,用于处理中间值

终点:**循环不变量,**每一次循环遵循左闭右开的原则。

分为

  • 最上方从左往右
  • 最右方从上往下
  • 最下方从右往左
  • 最左方从下往上

详细代码如下:

class Solution {public int[][] generateMatrix(int n) {//保证循环不变量的操作int startx = 0 ,starty = 0;int result[][] = new int[n][n]; //初始化数组int loop = n / 2; //循环次数,奇数时,中间值需要特殊处理。int mid = n / 2; //中间值int i,j; //用于循环int offset = 1; //用于减少每一次的循环次数int count = 1; //用于赋值while(loop-- > 0){  //循环次数//最上方从左往右for(j = starty; j < n - offset; j++){result[startx][j] = count++;}//最右方从上往下for(i = startx;i < n- offset;i++){result[i][j] = count++;}//最下方从右往左for(;j > starty;j--){result[i][j] = count++;}//最左方从下往上for(;i > startx;i--){result[i][j] = count++;}startx++;   //设置下一次的起始点starty++;   //设置下一次的起始点offset++;   //设置下一次的循环次数}//如果为奇数,中间值,特殊处理if(n % 2 == 1){result[mid][mid] = count; }return result;}
}

我是小辉,24 届毕业生。当下是找工作ing,欢迎关注,持续分享。

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

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

相关文章

人类和小鼠转录组上游分析

基础软件 conda install cutadapt, trimmomatic, samtools, hisat2, subread, deeptools -y人类转录组上游分析 # 样本名称 sample_namesample# 线程 threads4# 双端测序原始fastq1和fastq2路径 fastq1_path/path/${sample_name}_1.fq.gz fastq2_path/path/${sample_name}_2.…

5倍收益秘诀:APP广告如何变现?

在这个数字时代&#xff0c;智能手机几乎成了我们生活中不可或缺的一部分。无论是早晨醒来的第一件事&#xff0c;还是睡前的最后一件事&#xff0c;手机都与我们紧密相连。而在这个连接的世界里&#xff0c;APP广告变现成为了一个热门话题&#xff0c;它不仅仅是将每一次点击转…

Redis与数据库同步指南:订阅Binlog实现数据一致性

本文作者:小米,一个热爱技术分享的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! 大家好,我是29岁的小米,一名积极活泼、热爱分享技术的开发者。今天,我们来聊聊分布式系统中的一个重要话题——分布式一致性,特别是数据库和R…

如何清除电脑使用痕迹?5个方法保护个人隐私!

“我在使用电脑时&#xff0c;想将之前的使用痕迹删除&#xff0c;不知道应该怎么才能正确操作呢&#xff0c;希望大家给我出出主意。” 在使用电脑的过程中&#xff0c;我们经常会留下各种使用痕迹&#xff0c;如浏览历史、文档记录、临时文件等。这些痕迹可能会暴露我们的隐私…

随机森林算法实现分类

随机森林算法实现对编码后二进制数据的识别 1.直接先上代码&#xff01; import numpy as np import pandas as pd from sklearn.model_selection import train_test_split, GridSearchCV from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import …

自用升级centos7.2的默认Python 2.7.5为python3.8

wget https://www.python.org/ftp/python/3.8.8/Python-3.8.8.tgztar zxvf Python-3.8.8.tgz 进入刚刚解压后的目录 ./configure --prefix/data/soft/python3按照上面截图所属&#xff0c;需要安装gcc 安装报错需要安装 sudo yum install zlib1g-dev make -j4 make install -…

京东618全民拆快递 autojs一键脚本

京东618的最新活动为全民拆快递,因为是20周年的活动,所以可以瓜分20亿红包,想要购买一些家电的朋友可以提前关注起来,领取的红包可以直接抵扣,京东618全民拆快递软件app是专为此活动打造的一款辅助工具,可以帮你自动做任务,当然也支持淘宝的任务。 任务设置 1、自动打开…

【安装笔记-20240520-Windows-在 QEMU 中尝试运行 OpenWRT】

安装笔记-系列文章目录 安装笔记-20240520-Windows-在 QEMU 中尝试运行 OpenWRT 文章目录 安装笔记-系列文章目录安装笔记-20240520-Windows-在 QEMU 中尝试运行 OpenWRT 前言一、软件介绍名称&#xff1a;OpenWRT主页官方介绍 二、安装步骤测试版本&#xff1a;openwrt-23.05…

Java单元测试

单元测试一 一、单选题 1 public class Test{public static void main(String[] args){int i1;switch(i){case 0:System.out.println("1"(i));case 1:System.out.println("2"(i));break;case 2:System.out.println("3"(i));default…

算法题目记录

1.最短距离 题目简化&#xff1a; 明确问题 算法提示&#xff1a; 1.如何判断同类之间的最短距离为0 ---> 并查集路径压缩 2.如何存储任意两类的距离 ---> 邻接矩阵存储无向图 3.如何表示每个点属于哪一类 ---> 用数组id[节点]存储属于哪一类 4.如何算出任意两类…

光伏组件积灰检测系统

光伏组件积灰检测系统是一种专门用于监测光伏组件表面灰尘积累情况的设备。以下是关于该系统的详细信息和特点&#xff1a; 系统概述 光伏组件积灰检测系统安装在光伏板的框架上&#xff0c;通过实时监测光伏组件表面的灰尘厚度、分布情况和清洁度&#xff0c;为运维人员提供…

Codeforces Round 948 (Div. 2) D. XORificator(哈希)

题目 n*m(n*m<3e5)的矩阵&#xff0c; 实际为t(t<1e4)组样例&#xff0c;但保证sum n*m不超过3e5 你可以选一行把所有01翻转&#xff0c;问最多可以让多少列只有一个1&#xff0c;然后把你翻转的行输出 思路来源 其实题还挺裸的&#xff0c;教了一下潘老师&#xff0…

UIAbility的使用

UIAbility概述 UIAbility是一种包含用户界面的应用组件&#xff0c;主要用于和用户进行交互。UIAbility也是系统调度的单元&#xff0c;为应用提供一系列的窗口&#xff0c;应用在这些窗口里绘制用户交互界面。 每一个UIAbility实例&#xff0c;都对应于一个最近任务列表中的任…

28【Aseprite 作图】苹果——拆解

1 画苹果框架 左边:第一行 7 第二行 2 第三 四行1 竖着7行 竖着2行 竖着1 、1 行 横着2个 横着4个 苹果可以是左右对称的,完成上述后,水平翻转到右边 2 枝叶 第一行1 左边 2 3 4 行,各1 第5行,竖着4个 再横着3个 右边 竖着3个,然后斜着2个,然后斜着1个 最上面的,两个…

靶机Moonraker_1练习报告

Moonraker: 1靶机练习实践报告 一、安装靶机 靶机是.ova文件&#xff0c;需要用VirtualBox打开&#xff0c;但我习惯于使用VMWare,因此修改靶机文件&#xff0c;使其适用于VMWare打开。 解压ova文件&#xff0c;得到.ovf文件和.vmdk文件。 直接用VMWare打开.ovf文件即可。 …

【服务器报错】Pycharm运行服务器代码提示 can‘t open file “本地文件路径“

1. 问题 Pycharm连接远程服务器&#xff0c;代码已经同步&#xff0c;运行时候报错 #模拟报错 bash: line 0: cd: G:/python/hhh/Hi: No such file or directory /home/hhh/anaconda3/envs/hard/bin/python: cant open file G:/python/hhh/hi/hei.py: [Errno 2] No such file…

springMVC工作流程

大家好&#xff0c;这里是教授.F 1.浏览器会先发送请求url&#xff0c;前端控制器/中央控制器/分发器&#xff08;也就是DispatcherServlet&#xff09;进行获取。 2.此时前端控制器会调用HandlerMapping处理器映射器&#xff0c;然后返回处理器执行器链&#xff08;HandlerExe…

Android Service 启动流程

在早些年学习Android的时候&#xff0c;对Service有过总结&#xff0c;但是主要是如何去使用&#xff0c;注意事项&#xff0c;startService和bindService的区别。 Android Service_public int onstartcommand(intent intent, int flags-CSDN博客 但是今天从源码来总结下fram…

使用Python类的构造函数和析构函数

1、问题背景 当使用Python类时&#xff0c;可以使用构造函数和析构函数来初始化和清理类实例。构造函数在创建类实例时自动调用&#xff0c;而析构函数在删除类实例时自动调用。 在上面的代码示例中&#xff0c;Person类具有一个构造函数__init__和一个析构函数__del__。构造…