美文网首页
算法:螺旋矩阵 I

算法:螺旋矩阵 I

作者: 晋阳丶 | 来源:发表于2018-01-09 16:48 被阅读0次

    问题

    给定一个包含 m x n 个要素的矩阵,(m 行, n 列),按照螺旋顺序,返回该矩阵中的所有要素。

    样例

    给定如下矩阵:

    [
     [ 1, 2, 3 ],
     [ 4, 5, 6 ],
     [ 7, 8, 9 ]
    ]
    

    应返回 [1,2,3,6,9,8,7,4,5]。

    思路

    思路比较普通,就是螺旋遍历。

    实现

    private static List<Integer> spiralOrder(int[][] matrix) {
            // write your code here
            if (matrix.length == 0 || matrix[0].length == 0) {
                return null;
            }
            // 遍历当前行的首位置
            int lineStart = 0;
            // 遍历当前行的末位置
            int lineEnd = matrix[0].length;
            // 遍历当前列的首位置
            int columnStart = 0;
            // 遍历当前列的末位置
            int columnEnd = matrix.length;
            // 创建结果队列
            List<Integer> list = new LinkedList<>();
            // 遍历
            int flag = 0;
            while (list.size() < matrix.length * matrix[0].length) {
                if (flag == 0) {
                    for (int i = lineStart; i < lineEnd; i++) {
                        list.add(matrix[columnStart][i]);
                    }
                    flag++;
                    columnStart++;
                } else if (flag == 1) {
                    for (int i = columnStart; i < columnEnd; i++) {
                        list.add(matrix[i][lineEnd - 1]);
                    }
                    lineEnd--;
                    flag++;
                } else if (flag == 2) {
                    for (int i = lineEnd; i > lineStart; i--) {
                        list.add(matrix[columnEnd - 1][i - 1]);
                    }
                    flag++;
                    columnEnd--;
                } else if (flag == 3) {
                    for (int i = columnEnd; i > columnStart; i--) {
                        list.add(matrix[i - 1][lineStart]);
                    }
                    flag -= 3;
                    lineStart++;
                }
            }
            return list;
        }
    

    如果文章对你有帮助的话,不要忘记打上小编哟~

    相关文章

      网友评论

          本文标题:算法:螺旋矩阵 I

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