image.png

思路

  1. class Solution {
  2. public int[][] generateMatrix(int n) {
  3. int[][] res = new int[n][n];
  4. int[] dx = new int[]{-1,0,1,0};
  5. int[] dy = new int[]{0,1,0,-1};
  6. for(int x=0,y=0,i=0,d=1;i<n*n;i++){
  7. //进行赋值操作
  8. res[x][y]=i+1;
  9. //获取下一次的位置
  10. int a = x + dx[d],b = y + dy[d];
  11. if(a<0||a==n||b<0||b==n||res[a][b]!=0){ //边界条件
  12. d = (d+1)%4;
  13. a=x+dx[d];
  14. b=y+dy[d];
  15. }
  16. x=a;
  17. y=b;
  18. }
  19. return res;
  20. }
  21. }