题目
- 给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3
输出:
[[ 1, 2, 3 ],[ 8, 9, 4 ],[ 7, 6, 5 ]
]
实现
Java实现
思路&#xff1a; 首先设定边界&#xff0c;确定循环条件(num<&#61;target)&#xff0c;因为从1到n^2这些数字都要被赋值&#xff0c;之后利用循环在边界内进行赋值即可&#xff0c;按照顺时针的顺序&#xff0c;从左到右&#xff0c;从上到下&#xff0c;从右到左&#xff0c;从下到上。
class Solution {public int[][] generateMatrix(int n) {int left &#61; 0, right &#61; n - 1, top &#61; 0, buttom &#61; n - 1;int num &#61; 1;int target &#61; n * n;int[][] res &#61; new int[n][n];while (num <&#61; target) {for (int i &#61; left; i <&#61; right; i&#43;&#43;) {res[top][i] &#61; num&#43;&#43;;}top&#43;&#43;;for (int i &#61; top; i <&#61; buttom; i&#43;&#43;) {res[i][right] &#61; num&#43;&#43;;}right--;for (int i &#61; right; i >&#61; left; i--) {res[buttom][i] &#61; num&#43;&#43;;}buttom--;for (int i &#61; buttom; i >&#61; top; i--) {res[i][left] &#61; num&#43;&#43;;}left&#43;&#43;;}return res;}
}