美文网首页
算法27 Spiral Matrix

算法27 Spiral Matrix

作者: holmes000 | 来源:发表于2018-05-13 21:18 被阅读0次

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

思路:按顺时针获取数据输出,利用最大行列为基点,层层递进获取元素。
每次走一圈取数方式相同。

代码:

public List<Integer> spiralOrder(int[][] matrix) {
    List<Integer> output = new ArrayList<>();

    if (matrix.length < 1) {
        return output;
    }

    //矩阵的右下 行列最大元素(x,y)
    int x = matrix.length - 1;
    int y = matrix[0].length - 1;
    //矩阵的左上 (offset,offset)
    int offset = 0;
    while (true) {
        //从第1行, 左到右
        for (int i = offset; i <= y; i++) {
            output.add(matrix[offset][i]);
        }
        //从最后列 的第(offset+1)索引元素, 上到下
        for (int i = offset + 1; i <= x; i++) {
            output.add(matrix[i][y]);
        }
        //全部元素已输出
        if (x - offset == 0 || y - offset == 0) {
            return output;
        }

        //从最后一行的第(y-1) 索引元素,右到左
        for (int i = y - 1; i >= offset; i--) {
            output.add(matrix[x][i]);
        }
        //从第一列的第(x-1)索引元素,下到上
        for (int i = x - 1; i >= offset + 1; i--) {
            output.add(matrix[i][offset]);
        }

        x -= 1;
        y -= 1;
        offset += 1;//层层递进

        if (offset > x || y < offset) {
            return output;
        }
    }
}

时间复杂度:O(n2)
空间复杂度:O(1)

相关文章

  • 算法27 Spiral Matrix

    题目:给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例...

  • 对付所有的旋转矩阵

    **54、Spiral Matrix **Given a matrix of m x n elements (m ...

  • 54. Spiral Matrix

    54. Spiral Matrix 题目:https://leetcode.com/problems/spiral...

  • LeetCode 54 Spiral Matrix

    LeetCode 54 Spiral Matrix Given a matrix of m x n element...

  • 54. Spiral Matrix

    leetcode 54. Spiral Matrix Given a matrix of m x n eleme...

  • 每天(?)一道LeetCode(9) Spiral Matrix

    Array 054. Spiral Matrix Given a matrix of m x n elements...

  • Leetcode 54:Spiral Matrix 螺旋矩阵

    54:Spiral Matrix 螺旋矩阵 Given a matrix of m x n elements (m...

  • Spiral Matrix

    好久没写文章了...自罚30大板在刷leetcode就继续更新吧 题目很好理解,就是把一个矩阵螺旋着输出。看到这个...

  • Spiral Matrix

    Easy, Msc Question 返回一个m x n的矩阵的螺旋序列 For example,矩阵:[[ 1,...

  • Spiral Matrix

    题意是将一个二维数组,螺旋遍历出来,那么从Matrix[0][0]开始,提前记录好上下左右四个方向的边界,并且按照...

网友评论

      本文标题:算法27 Spiral Matrix

      本文链接:https://www.haomeiwen.com/subject/jgcrdftx.html