`

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:

[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
You should return [1,2,3,6,9,8,7,4,5].

给定一个m*n个矩阵,按照顺时针的方向,输出矩阵中的元素。设定四个变量,top, bottom, left, right, 从第一行第一个元素开始,想添加最顶上一行的元素,然后让top加1; 然后添加右边的一列元素,让right减1;接下来添加最下面一行的元素,让bottom减1;最后添加最左边一列,然后让left加1,如果出现left > right 或者top > bottom时就停止。代码如下:
public class Solution {
    public List<Integer> spiralOrder(int[][] matrix) {
        List<Integer> list = new ArrayList<Integer>();
        if(matrix == null || matrix.length == 0 || matrix[0].length == 0) return list;
        int left = 0;
        int right = matrix[0].length - 1;
        int top = 0;
        int bottom = matrix.length - 1;
        while(left <= right && top <= bottom) {
            // 添加顶上的元素
            if(left <= right && top <= bottom)
                for(int i = left; i <= right; i++) {
                    list.add(matrix[top][i]);
                }
                top ++;
            // 添加右边的元素 
            if(left <= right && top <= bottom)
                for(int j = top; j <= bottom; j++) {
                    list.add(matrix[j][right]);
                }
                right --;
            //添加底部的元素  
            if(left <= right && top <= bottom)
                for(int m = right; m >= left; m--) {
                    list.add(matrix[bottom][m]);
                }
                bottom --;
            // 添加左边的元素   
            if(left <= right && top <= bottom)
                for(int n = bottom; n >= top; n--) {
                    list.add(matrix[n][left]);
                }
                left ++;
        }
        return list;
    }
}
分享到:
评论

相关推荐

    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++-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: 在一组已经排序的区间中,插入一个新的...

    pat甲级单词pat甲级单词pat甲级单词

    **矩阵(Matrix)** - **定义**: 由一系列按行和列排列的数字组成的矩形数组。 - **用途**: 在线性代数中用于表示变换、方程组等。 #### 23. **连续的(Continuous)** - **定义**: 指没有间断或间断很少的情况。 - **...

Global site tag (gtag.js) - Google Analytics