龙空技术网

每日一题:螺旋矩阵

Virigo 41

前言:

如今咱们对“c语言螺旋矩阵”大体比较注意,朋友们都想要学习一些“c语言螺旋矩阵”的相关资讯。那么小编同时在网摘上网罗了一些关于“c语言螺旋矩阵””的相关文章,希望看官们能喜欢,姐妹们快快来学习一下吧!

地址

leetcode地址:

难度

中等

题目

给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。

示例 1:

输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]

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

示例 2:

输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]

输出:[1,2,3,4,8,12,11,10,9,5,6,7]

提示:

m == matrix.lengthn == matrix[i].length1 <= m, n <= 10-100 <= matrix[i][j] <= 100思路

如下图所示,本题可以想类似于剥洋葱的形式,一层一层的往下剥。

class Solution {    public List<Integer> spiralOrder(int[][] matrix) {        List<Integer> result = new ArrayList<>();        int left = 0; int right = matrix[0].length-1;        int top = 0; int down = matrix.length-1;        while (true) {            for (int i = left; i <= right; i++) {                result.add(matrix[top][i]);            }            top++;            if (top > down) break;            for(int i = top;i<=down;i++){                result.add(matrix[i][right]);            }            right--;            if(left>right)break;            for (int i = right;i>=left;i--){                result.add(matrix[down][i]);            }            down--;            if (top > down) break;            for(int i =down;i>=top;i--){                result.add(matrix[i][left]);            }            left++;            if(left>right)break;        }        return result;    }}

标签: #c语言螺旋矩阵