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

54. 螺旋矩阵

https://leetcode.cn/problems/spiral-matrix/description/?envType=study-plan-v2&envId=top-100-liked
观察示例中的输出轨迹我们可以想到如下设计:
1.在朝某一方向行进到头后的改变方向是确定的,左->下,下->右,右->上,上->左
2.在各个方向的边界也是可以确认的,在改变方向后,行进方向上的边界需要改变,向右上边界+1,向下右边界-1,向左下边界
3.可以通过边界和计数来判度是否结束
初始边界:上:0,右:matrix[0].length-1,下:matrix.length-1,左:0
    public static void main(String[] args) {int[][] matrix = {{1,2,3},{4,5,6},{7,8,9}};System.out.println(new Solution().spiralOrder(matrix));}public List<Integer> spiralOrder(int[][] matrix) {// 定义左、上、右、下边界int lBoundary = 0, upBoundary = 0, rBoundary = matrix[0].length - 1, dBoundary = matrix.length - 1;// 定义方向,0:向右,1:向下,2:向左,3:向上int direction = 0;// 计数int count = 0;// 总数int sum = matrix.length * matrix[0].length;// 结果列表List<Integer> res = new ArrayList<>();// 当计数小于总数时,继续循环while(count < sum){// 向右if(direction == 0){// 从左边界到右边界,依次添加元素for(int i = lBoundary; i <= rBoundary; i++){res.add(matrix[upBoundary][i]);count++;}// 上边界下移upBoundary++;}// 向下if(direction == 1){// 从上边界到下边界,依次添加元素for(int i = upBoundary; i <= dBoundary; i++){res.add(matrix[i][rBoundary]);count++;}// 右边界左移rBoundary--;}// 向左if(direction == 2){// 从右边界到左边界,依次添加元素for(int i = rBoundary; i >= lBoundary; i--){res.add(matrix[dBoundary][i]);count++;}// 下边界上移dBoundary--;}// 向上if(direction == 3){// 从下边界到上边界,依次添加元素for(int i = dBoundary; i >= upBoundary; i--){res.add(matrix[i][lBoundary]);count++;}// 左边界右移lBoundary++;}// 改变方向direction = (direction + 1) % 4;}return res;}

http://www.lryc.cn/news/477882.html

相关文章:

  • 剧本杀小程序,市场发展下的新机遇
  • 【系统架构设计师】论文:论基于 ABSD 的软件开发
  • 为什么OLED透明屏在同类产品中显示效果最好
  • 深度学习基础知识-Batch Normalization(BN)超详细解析
  • 基于单片机的燃气报警阀门系统
  • watch与computed的区别、运用的场景
  • 【ESP32+MicroPython】开发环境部署
  • Vision - 开源视觉分割算法框架 Grounded SAM2 配置与推理 教程 (1)
  • DAY21|二叉树Part08|LeetCode: 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树
  • 在gitlab,把新分支替换成master分支
  • 使用 Spring Boot 集成 Thymeleaf 和 Flying Saucer 实现 PDF 导出
  • web——upload1——攻防世界
  • nginx 搭建网站
  • Java基础-Java中的常用类(上)
  • 气压仪器智能打气泵方案芯片SIC8833
  • 软件测试(系统测试)的定位和专业:完善产品;专业;非助手;自动化
  • 2024 CSS保姆级教程四
  • PostgreSQL技术内幕17:PG分区表
  • 群控系统服务端开发模式-应用开发-上传工厂开发
  • 【Docker系列】指定系统平台拉取 openjdk:8 镜像
  • 语音识别:docker部署FunASR以及springboot集成funasr
  • Rust项目结构
  • 计算并联电阻的阻值
  • MySQL符号类型(详细)
  • Angular引用控件类
  • stm32 踩坑笔记
  • 文件上传和文件包含
  • [Unity Demo]从零开始制作空洞骑士Hollow Knight第十八集补充:制作空洞骑士独有的EventSystem和InputModule
  • yelp数据集上试验SVD,SVDPP,PMF,NMF 推荐算法
  • 计算机视觉常用数据集Cityscapes的介绍、下载、转为YOLO格式进行训练