{ "type": "code_options", "author": "csdn.net", "source": "solution.md", "exercise_id": "04b27688798f49a8b07f36892f6e1b6d", "keywords": "数组,矩阵,模拟", "title": "螺旋矩阵", "desc": [ { "content": "\n

给你一个 mn 列的矩阵 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]

 

提示:

", "language": "markdown" } ], "answer": [ { "content": "", "language": "java" } ], "prepared": [ [ { "content": "", "language": "java" } ], [ { "content": "", "language": "java" } ], [ { "content": "", "language": "java" } ] ], "template": { "content": "class Solution {\n\tpublic List spiralOrder(int[][] matrix) {\n\t\tList res = new ArrayList();\n\t\tif (matrix.length == 0 || (matrix.length == 1 && matrix[0].length == 0))\n\t\t\treturn res;\n\t\tint left = 0;\n\t\tint right = matrix[0].length - 1;\n\t\tint top = 0;\n\t\tint bottom = matrix.length - 1;\n\t\tint num = (right + 1) * (bottom + 1);\n\t\twhile (num > 0) {\n\t\t\tfor (int j = left; j <= right; j++) {\n\t\t\t\tres.add(matrix[top][j]);\n\t\t\t\tnum--;\n\t\t\t}\n\t\t\tif (num <= 0)\n\t\t\t\tbreak;\n\t\t\ttop++;\n\t\t\tfor (int i = top; i <= bottom; i++) {\n\t\t\t\tres.add(matrix[i][right]);\n\t\t\t\tnum--;\n\t\t\t}\n\t\t\tif (num <= 0)\n\t\t\t\tbreak;\n\t\t\tright--;\n\t\t\tfor (int j = right; j >= left; j--) {\n\t\t\t\tres.add(matrix[bottom][j]);\n\t\t\t\tnum--;\n\t\t\t}\n\t\t\tif (num <= 0)\n\t\t\t\tbreak;\n\t\t\tbottom--;\n\t\t\tfor (int i = bottom; i >= top; i--) {\n\t\t\t\tres.add(matrix[i][left]);\n\t\t\t\tnum--;\n\t\t\t}\n\t\t\tif (num <= 0)\n\t\t\t\tbreak;\n\t\t\tleft++;\n\t\t}\n\t\treturn res;\n\t}\n}", "language": "java" }, "node_id": "dailycode-b797b4502b324dbcb41cc7d3ddb2bdbd", "license": "csdn.net", "created_at": 1637894158, "topic_link": "https://bbs.csdn.net/topics/600470121" }