前言:
如今咱们对“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语言螺旋矩阵