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

螺旋矩阵(算法题)

文章目录

  • 螺旋矩阵
    • 解题思路

螺旋矩阵

给你一个正整数 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.lryc.cn/news/355672.html

相关文章:

  • ffmpeg-webrtc(metartc)给ffmpeg添加webrtc协议
  • C语言知识大纲
  • 【必会面试题】synchronized锁升级的过程
  • 设计模式——工厂三兄弟之简单工厂
  • 如何使用ChatGPT撰写短视频爆款文案
  • 申办风景园林设计乙级资质如何整理技术人员的专业培训证明
  • 类别型特征
  • java医院管理系统源码(springboot+vue+mysql)
  • vue2 面试题
  • 【JavaEE精炼宝库】多线程(3)线程安全 | synchronized
  • el-table-column两种方法处理特殊字段,插槽和函数
  • huggingface笔记: accelerate estimate-memory 命令
  • 李飞飞亲自撰文:大模型不存在主观感觉能力,多少亿参数都不行
  • 超级好用的C++实用库之套接字
  • C++ | Leetcode C++题解之第108题将有序数组转换为二叉搜索树
  • 5月27日,每日信息差
  • echart扩展插件词云echarts-wordcloud
  • 解决无法直接抓取链接地址
  • java面对对象编程-多态
  • 【Sql Server】随机查询一条表记录,并重重温回顾下自定义函数的封装和使用
  • 基于C#开发web网页管理系统模板流程-主界面管理员录入和编辑功能完善
  • K8s证书过期处理
  • 刷题之路径总和Ⅲ(leetcode)
  • MongoDB 原子操作:确保数据一致性和完整性的关键
  • 2024上半年软考高级系统架构设计师回顾
  • SQL注入绕过技术深度解析与防御策略
  • Redis教程(十六):Redis的缓存穿透、缓存击穿、缓存雪崩
  • 如何实现一个高效的单向链表逆序输出?
  • 使用 Go 实现 HelloWorld 程序,并分析其结构
  • 机器学习:在Python中sklearn库的使用,纯干货!12个小时的整理!