| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 
 | package com.demo.s59;
 
 
 
 
 public class Solution {
 public int[][] generateMatrix(int n) {
 int maxNum = n * n;
 int curNum = 1;
 
 int[][] matrix = new int[n][n];
 int row = 0, column = 0;
 int[][] directions = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
 int directionIndex = 0;
 while (curNum <= maxNum) {
 matrix[row][column] = curNum;
 curNum++;
 
 int nextRow = row + directions[directionIndex][0],
 
 nextColumn = column + directions[directionIndex][1];
 
 if (nextRow < 0 || nextRow >= n || nextColumn < 0 || nextColumn >= n || matrix[nextRow][nextColumn] != 0) {
 
 directionIndex = (directionIndex + 1) % 4;
 }
 row = row + directions[directionIndex][0];
 column = column + directions[directionIndex][1];
 }
 return matrix;
 }
 }
 
 |