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

leetcode_59. 螺旋矩阵 II

59. 螺旋矩阵 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

代码思想:

         定义一个变量 circle 表示需要遍历的圈数,一个变量 num 来记录当前需要填入的数字,从 1 开始递增。遍 历每一个圈,对于每个圈:

  • 向右遍历上侧,填入数字 num 到 matrix[i][k]
  • 向下遍历右侧,填入数字 num 到 matrix[k][n-i-1]
  • 向左遍历下侧,填入数字 num 到 matrix[n-i-1][k]
  • 向上遍历左侧,填入数字 num 到 matrix[k][i]

         关键点在于利用圈的概念来遍历螺旋矩阵。对于每个圈,需要遍历上、右、下、左四条边,并且每个圈的起始和结束位置都不一样。通过控制循环条件,可以依次填入从 1 到 n^2 的数字,最终形成一个螺旋矩阵。

class Solution {public int[][] generateMatrix(int n) {int num = 1;int circle = (n + 1) / 2;int[][] matrix = new int[n][n];for (int i = 0; i < circle; i++) {for (int k = i; k < n - i - 1; k++) {matrix[i][k] = num++;}for (int k = i; k < n - i - 1; k++) {matrix[k][n - i - 1] = num++;}for (int k = n - i - 1; k >= i; k--) {matrix[n - i - 1][k] = num++;}for (int k = n - i - 2; k > i; k--) {matrix[k][i] = num++;}}return matrix;}
}

http://www.mrgr.cn/news/6159.html

相关文章:

  • 第二十三节、血量更新逻辑的实现
  • [数据库][知识]SQL Server、MySQL 和 Oracle 的默认端口和数据库链接
  • k8s - Secret实践练习
  • SQLALchemy 分组过滤、子查询
  • MySQL数据库——表的CURD(Delete)
  • 认识Eureka原理
  • EmguCV学习笔记 C# 6.1 边缘检测
  • 软件测试——自动化测试博客系统
  • 404炫酷单页面html5源码
  • 树与图的宽度优先遍历
  • 入门re 正则表达式
  • OpenAI 推出名为 GPT-4o mini 的迷你 AI 模型,该款模型设计有哪些亮点?
  • 鸿蒙Harmony开发知识:Arkts函数
  • 38-java代码可以实现一次编写 到处运行
  • c++题目_背包问题(可任意分割) 贪心算法
  • 想学网络,为什么要先学数通?
  • 深入理解 Go 语言的 GMP 调度模型
  • js 和 ts 的类型总览
  • 数据结构---单链表实现
  • vue Formily动态表单解决方案