难度:中等
频次:114
题目:给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。


解题思路:按要求模拟遍历(重点在构造xy的坐标上)
注意:

  • 需要定义四个方向的走向 0:右 1:下 2:左 3:上
  • 根据上面的四个方向定义每次走向xy的变化 int[][] step={{0,1},{1,0},{0,-1},{-1,0}};
  • ArrayList的元素个数要用size()
  • 遍历过的要标记 Integer.MAX_VALUE;
  • 要记得判断是否走出了边界或者走过了已经走过的元素,如果是,要按顺序变换方向

代码

class Solution {public List<Integer> spiralOrder(int[][] matrix) {List<Integer> res=new ArrayList<>();int row=matrix.length;int col=matrix[0].length;//定义四个方向  // 0:右 1:下 2:左 3:上//二维数组。matrix[x][y] x代表的第几行 y代表的第几列int[][] step={{0,1},{1,0},{0,-1},{-1,0}};//标记变更方向的值int direction=0;//起始位置为00int x=0,y=0;//如果res的大小还没到矩阵的元素个数,继续循环while(res.size()<row*col){res.add(matrix[x][y]);//如果已经走过,用integer的最大值标记matrix[x][y]=Integer.MAX_VALUE; int xnext=x+step[direction%4][0];int ynext=y+step[direction%4][1];//判断下一步要走过的元素是否超除矩阵的边界并且是否已经走过了if(xnext<0||xnext>=row||ynext<0||ynext>=col||matrix[xnext][ynext]==Integer.MAX_VALUE){//走到尽头或者走过了就得变更方向direction++;xnext=x+step[direction%4][0];ynext=y+step[direction%4][1];} x=xnext;y=ynext;  }return res;}
}

leetcode 54. 螺旋矩阵相关推荐

  1. LeetCode 59. 螺旋矩阵 II LeetCode 54. 螺旋矩阵

    文章目录 1. 题目信息 2. LeetCode 59 解题 3. LeetCode 54. 螺旋矩阵 4.<剑指Offer>面试题29 1. 题目信息 给定一个正整数 n,生成一个包含 ...

  2. LeetCode 54.螺旋矩阵 - 原地修改

    [LetMeFly]54.螺旋矩阵 - 原地修改 力扣题目链接:https://leetcode.cn/problems/spiral-matrix/ 给你一个 m行 n列的矩阵 matrix,请按照 ...

  3. Java实现 LeetCode 54 螺旋矩阵

    54. 螺旋矩阵 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素. 示例 1: 输入: [ [ 1, 2, 3 ], [ 4, 5, 6 ], ...

  4. 力扣(LeetCode)54. 螺旋矩阵(C++)

    思路分析 螺旋矩阵,又称蛇形矩阵,这是说,遍历它就像蛇一样一环一环的向内滑动. 遍历时变向,我们需要一个技巧.开方向数组, d x , d y dx,dy dx,dy,分别代表 x x x 的移动方向 ...

  5. Leetcode 54 螺旋矩阵 (每日一题 20210729)

    给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素.示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3 ...

  6. leetcode 54. 螺旋矩阵(递归)

    给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素. 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2 ...

  7. leetcode 54.螺旋矩阵

    题目 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素. 示例 1: 输入: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8 ...

  8. LeetCode 885. 螺旋矩阵 III

    1. 题目 在 R 行 C 列的矩阵上,我们从 (r0, c0) 面朝东面开始 这里,网格的西北角位于第一行第一列,网格的东南角位于最后一行最后一列. 现在,我们以顺时针按螺旋状行走,访问此网格中的每 ...

  9. LeetCode:螺旋矩阵【54】

    LeetCode:螺旋矩阵[54] 题目描述 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素. 示例 1: 输入: [[ 1, 2, 3 ],[ ...

最新文章

  1. asp.net 开源
  2. Wince 添加中文字库
  3. 4kyu N linear
  4. Oracle Explain Plan,hint解释与示例
  5. python os读取文件名_Python3基础 os.path.splitext 处理文件名,得到文件名+扩展名
  6. 动态修改网页title
  7. CSDN 创始人蒋涛:选择长沙作“大本营”,打造开发者中心城市
  8. android 调用线程方法,Android使用线程获取网络图片的方法
  9. Neo4j AuraDB免费版——Data Importer
  10. 泰坦尼克号数据分析!
  11. SOA介绍--什么是SOA?[转载]
  12. (专升本)Excel(分页符的删除)
  13. 国内首款红外测温5G手机;华为5G汽车模组正式商用;台湾发放首张5G牌照
  14. linux构建lamp的关键步骤,Linux-LAMP平台搭建详解
  15. 麦氏细菌浊度分析仪的校准物质选择
  16. 宝塔服务器性能跑分排行榜(CPU/内存/系统)
  17. 微信小程序在线成语接龙答题有奖1.5.1版源码
  18. habor私有镜像仓库部署
  19. 手机屏幕常见故障_iPhone手机一些比较常见的维修故障分析
  20. 3-9xss的盲打以及盲打实验演示

热门文章

  1. 数组去重是面试中经常问到的问题
  2. Unix/Linux环境C编程入门教程(41) C语言库函数的文件操作详解
  3. 嵌入式Linux驱动程序
  4. AutoCAD.net: DXF群码
  5. Oracke nls Parameters
  6. Linux 软件安装与卸载之获取程序包的途径
  7. Java简单多线程断点下载
  8. CSS实现垂直居中的5种思路
  9. ElasticSearch 2 (7) - 基本概念
  10. 03-SpringMVC-获得用户请求数据