Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.
For example,
Given the following matrix:
public class Solution { public List<Integer> spiralOrder(int[][] matrix) { List<Integer> res = new ArrayList<>(); if (matrix == null || matrix.length == 0) { return res; } int tR = 0; int tC = 0; int dR = matrix.length-1; int dC = matrix[0].length-1; while (tR <= dR && tC <= dC) { printEdge(matrix, tR++, tC++, dR--, dC--, res); } return res; } private void printEdge(int[][] matrix, int tR, int tC, int dR, int dC, List<Integer> res) { // TODO Auto-generated method stub if (tR == dR) { for (int i = tC; i <= dC; i++) { res.add(matrix[tR][i]); } } else if (tC == dC) { for (int i = tR; i <= dR; i++) { res.add(matrix[i][tC]); } } else { int curC = tC; int curR = tR; while (curC != dC) { res.add(matrix[tR][curC]); curC++; } while (curR != dR) { res.add(matrix[curR][dC]); curR++; } while (curC != tC) { res.add(matrix[dR][curC]); curC--; } while (curR != tR) { res.add(matrix[curR][tC]); curR--; } } } }
相关推荐
js js_leetcode题解之54-spiral-matrix.js
c是最好的编程语言 C语言_leetcode题解之54-spiral-matrix.c
js js_leetcode题解之59-spiral-matrix-II.js
c语言入门 C语言_leetcode题解之59-spiral-matrix-ii.c
在本压缩包中,主题聚焦于C++编程基础与LeetCode题目的结合,特别是针对第54题“螺旋矩阵”(Spiral Matrix)的解法。LeetCode是一个在线平台,提供了一系列编程挑战,旨在帮助程序员提升算法技能和解决实际问题的...
第59题"螺旋矩阵II"(Spiral Matrix II)是LeetCode中的一个经典问题,它涉及到矩阵操作和迭代。在这个问题中,我们需要生成一个特定大小的螺旋矩阵,从中心向外螺旋式填充数字。 螺旋矩阵是一种特殊的二维数组,其...
在编程领域,蛇形数组(Spiral Matrix)是一种特殊的二维数组排列方式,它按照从左上角开始,先向右填充,然后向下,接着向左,最后向上这样的顺序不断循环,形成一种类似蛇行的路径。在ACM(国际大学生程序设计竞赛...
printf("The spiral matrix is:\n"); printSpiral(arr, rows, cols); return 0; } ``` 这个程序首先获取用户输入的矩阵大小和元素,然后调用`printSpiral`函数按照螺旋顺序打印矩阵。注意,这里的代码仅用于...
本题解围绕的是LeetCode中的第54题——螺旋矩阵(Spiral Matrix)。该题目的核心是理解递归与回溯的概念,并运用它们来解决实际问题。 螺旋矩阵是一种特殊的矩阵布局方式,数据按照顺时针方向螺旋地填充二维数组。...
标题中的“python-leetcode面试题解之第54题螺旋矩阵-题解.zip”表明这是一个关于Python编程语言的LeetCode面试题解答,具体是针对第54题——螺旋矩阵(Spiral Matrix)的解题代码和分析。LeetCode是一个在线平台,...
首先,我们来看螺旋方阵(Spiral Matrix)。螺旋方阵是一种特殊的矩阵排列方式,它从中心开始,按照顺时针或逆时针方向向外扩展,形成一个类似螺旋的形状。例如,对于一个4x4的矩阵,我们可能得到如下的螺旋: ``` ...
**螺旋矩阵(Spiral Matrix)**是一种特殊的矩阵排列方式,它按照螺旋顺序填充数字,通常从左上角开始,顺时针方向旋转,直到填满整个矩阵。在编程领域,理解和实现螺旋矩阵是非常常见的练习,它能锻炼程序员对数组...
- Spiral Matrix(螺旋矩阵) - Integer to Roman(整数转罗马数字) 9. Stack(栈): 栈是一种后进先出(LIFO)的数据结构,它有两个主要操作:push(压栈)和pop(出栈)。文件中提到了栈相关的算法: - Min ...
杂项部分包括了一些不那么容易归类的问题,如螺旋矩阵(Spiral Matrix)、整数转罗马数字(Integer to Roman)、克隆图(Clone Graph)等。 **栈(Stack)** 栈是一种先进后出(FILO)的数据结构。 - 最小栈(Min ...
35. Spiral Matrix:按螺旋方式打印矩阵。 36. Integer to Roman:将整数转换为罗马数字。 37. Roman to Integer:将罗马数字转换为整数。 38. Clone Graph:复制一个无向图。 39. Min Stack:设计一个栈,支持获取...
35. Spiral Matrix:螺旋遍历矩阵。 36. Integer to Roman:整数转换成罗马数字。 37. Roman to Integer:罗马数字转换成整数。 38. Clone Graph:深度复制一个图。 【栈】 39. Min Stack:设计一个栈,支持 push、...
...The number of questions is increasing recently. Here is the classification of all `468` questions. ...I'll keep updating for full summary and better solutions....|-----|---------------- | --------------- |...
- Spiral Matrix: 给定一个m×n矩阵,以螺旋方式遍历矩阵中的所有元素一次,并且只遍历一次。 - Merge Intervals: 给定一组区间,请合并所有重叠的区间。 - Insert Interval: 在一组已经排序的区间中,插入一个新的...