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

LeetCode-54. 螺旋矩阵

题目来源
54. 螺旋矩阵

题目思路

while循环只遍历"环",不成环就不遍历了
在这里插入图片描述
四个边界

  • 上边界 top : 0
  • 下边界 bottom : matrix.length - 1
  • 左边界 left : 0
  • 右边界 right : matrix[0].length - 1

矩阵不一定是方阵
top < bottom && left < right 是循环的条件
无法构成“环”了,就退出循环,退出时可能是这 3 种情况之一:
top == bottom && left < right —— 剩一行
top < bottom && left == right —— 剩一列
top == bottom && left == right —— 剩一项(也算 一行/列)
处理剩下的单行或单列
因为是按顺时针推入结果数组的,所以
剩下的一行,从左至右 依次推入结果数组
剩下的一列,从上至下 依次推入结果数组

比如[[3],[4]]
左右相等,那么我们从上至下遍历

if(left == right){for(int i = top;i<=bottom;i++){list.add(matrix[i][left]);} 
}

代码实现

class Solution {public List<Integer> spiralOrder(int[][] matrix) {ArrayList<Integer> list = new ArrayList<>();int left = 0;int top = 0;int bottom = matrix.length-1;int right = matrix[0].length-1;while(left < right && top < bottom){// 上层for(int i = left;i< right;i++){list.add(matrix[top][i]);}//右侧for(int i = top;i< bottom;i++){list.add(matrix[i][right]);}//下侧for(int i = right;i>left;i--){list.add(matrix[bottom][i]);}//左侧for(int i = bottom;i>top;i--){list.add(matrix[i][left]);}left++;top++;bottom--;right--;}if(top == bottom){for(int i = left;i<=right;i++){list.add(matrix[top][i]);}}else if(left == right){for(int i = top;i<=bottom;i++){list.add(matrix[i][left]);} }return list;}
}

在这里插入图片描述

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

相关文章:

  • 【Python入门第十八天】Python For 循环
  • Qt图片定时滚动播放器
  • 李宏毅2023春季机器学习课程
  • 计算机操作系统知识点汇总
  • 【离线数仓-8-数据仓库开发DWD层设计要点-交易域相关事实表】
  • 计算机网络(七):DNS协议和原理,DNS为什么用UDP,网页解析的全过程
  • 算法23:多叉树_派对的最大快乐值
  • 中国ETC行业市场规模及未来发展趋势
  • 每日刷题(一)——只出现一次的数字
  • 洛谷P5737 【深基7.例3】闰年展示 C语言/C++
  • shell注释
  • 【C++入门(上篇)】C++入门学习
  • 【密码学】 一篇文章讲透数字签名
  • POI导入导出、EasyExcel批量导入和分页导出
  • 手把手教你做微信公众号
  • python-在macOS上安装python库 xlwings失败的解决方式
  • 【Linux】进程间通信(匿名管道和命名管道通信、共享内存通信)
  • 漏洞分析: WSO2 API Manager 任意文件上传、远程代码执行漏洞
  • 详解Android 13种 Drawable的使用方法
  • MakeFile教程
  • Spring使用mongoDB步骤
  • 【蓝牙mesh】access层(接入层)协议介绍
  • 【一天一门编程语言】JavaScript 语言程序设计极简教程
  • CMake调试器出炉:调试你的CMake脚本
  • 题解 # 二维矩阵最大矩形问题#
  • 奔四的路上,依旧倔强的相信未来
  • 61 k8s + rancher + karmada容器化部署
  • Vue3的新特性变化,上手指南!
  • OllyDbg
  • 记一次键盘维修,最终修复