`
hcx2013
  • 浏览: 88881 次
社区版块
存档分类
最新评论

Spiral Matrix

 
阅读更多

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--;
			}
		}
	}
}

 

 

0
0
分享到:
评论

相关推荐

    js-leetcode题解之54-spiral-matrix.js

    js js_leetcode题解之54-spiral-matrix.js

    C语言-leetcode题解之54-spiral-matrix.c

    c是最好的编程语言 C语言_leetcode题解之54-spiral-matrix.c

    js-leetcode题解之59-spiral-matrix-II.js

    js js_leetcode题解之59-spiral-matrix-II.js

    C语言-leetcode题解之59-spiral-matrix-ii.c

    c语言入门 C语言_leetcode题解之59-spiral-matrix-ii.c

    c++-c++编程基础之leetcode题解第54螺旋矩阵.zip

    在本压缩包中,主题聚焦于C++编程基础与LeetCode题目的结合,特别是针对第54题“螺旋矩阵”(Spiral Matrix)的解法。LeetCode是一个在线平台,提供了一系列编程挑战,旨在帮助程序员提升算法技能和解决实际问题的...

    c++-c++编程基础之leetcode题解第59题螺旋矩阵II.zip

    第59题"螺旋矩阵II"(Spiral Matrix II)是LeetCode中的一个经典问题,它涉及到矩阵操作和迭代。在这个问题中,我们需要生成一个特定大小的螺旋矩阵,从中心向外螺旋式填充数字。 螺旋矩阵是一种特殊的二维数组,其...

    c++ 蛇形数组 倒三角

    在编程领域,蛇形数组(Spiral Matrix)是一种特殊的二维数组排列方式,它按照从左上角开始,先向右填充,然后向下,接着向左,最后向上这样的顺序不断循环,形成一种类似蛇行的路径。在ACM(国际大学生程序设计竞赛...

    螺旋矩阵c语言源码.zip

    printf("The spiral matrix is:\n"); printSpiral(arr, rows, cols); return 0; } ``` 这个程序首先获取用户输入的矩阵大小和元素,然后调用`printSpiral`函数按照螺旋顺序打印矩阵。注意,这里的代码仅用于...

    javascript-leetcode面试题解递归与回溯问题之第54题螺旋矩阵-题解.zip

    本题解围绕的是LeetCode中的第54题——螺旋矩阵(Spiral Matrix)。该题目的核心是理解递归与回溯的概念,并运用它们来解决实际问题。 螺旋矩阵是一种特殊的矩阵布局方式,数据按照顺时针方向螺旋地填充二维数组。...

    python-leetcode面试题解之第54题螺旋矩阵-题解.zip

    标题中的“python-leetcode面试题解之第54题螺旋矩阵-题解.zip”表明这是一个关于Python编程语言的LeetCode面试题解答,具体是针对第54题——螺旋矩阵(Spiral Matrix)的解题代码和分析。LeetCode是一个在线平台,...

    螺旋方阵,数字塔,约瑟夫环

    首先,我们来看螺旋方阵(Spiral Matrix)。螺旋方阵是一种特殊的矩阵排列方式,它从中心开始,按照顺时针或逆时针方向向外扩展,形成一个类似螺旋的形状。例如,对于一个4x4的矩阵,我们可能得到如下的螺旋: ``` ...

    C逻旋矩阵源码

    **螺旋矩阵(Spiral Matrix)**是一种特殊的矩阵排列方式,它按照螺旋顺序填充数字,通常从左上角开始,顺时针方向旋转,直到填满整个矩阵。在编程领域,理解和实现螺旋矩阵是非常常见的练习,它能锻炼程序员对数组...

    CleanCodeHandbook_v1.0.3

    - Spiral Matrix(螺旋矩阵) - Integer to Roman(整数转罗马数字) 9. Stack(栈): 栈是一种后进先出(LIFO)的数据结构,它有两个主要操作:push(压栈)和pop(出栈)。文件中提到了栈相关的算法: - Min ...

    leetcode java

    杂项部分包括了一些不那么容易归类的问题,如螺旋矩阵(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:设计一个栈,支持获取...

    Leetcode book刷题必备

    35. Spiral Matrix:螺旋遍历矩阵。 36. Integer to Roman:整数转换成罗马数字。 37. Roman to Integer:罗马数字转换成整数。 38. Clone Graph:深度复制一个图。 【栈】 39. Min Stack:设计一个栈,支持 push、...

    LeetCode最全代码

    ...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....|-----|---------------- | --------------- |...

    _leetcode-python.pdf

    - Spiral Matrix: 给定一个m×n矩阵,以螺旋方式遍历矩阵中的所有元素一次,并且只遍历一次。 - Merge Intervals: 给定一组区间,请合并所有重叠的区间。 - Insert Interval: 在一组已经排序的区间中,插入一个新的...

Global site tag (gtag.js) - Google Analytics