```输入: 3

[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]```

# 题解

left -> right

top -> bottom

right -> left

bottom -> top

## python

```class Solution:
def generateMatrix(self, n):
"""
:type n: int
:rtype: List[List[int]]
"""
matrix = [[0 for j in range(n)] for i in range(n)]
top = 0
bottom = n - 1
left = 0
right = n - 1
count = 1
while (True):
for i in range(left, right + 1):
matrix[top][i] = count
count += 1
top += 1
if left > right or top > bottom:
break
for i in range(top, bottom + 1):
matrix[i][right] = count
count += 1
right -= 1
if left > right or top > bottom:
break
for j in range(left, right + 1)[::-1]:
matrix[bottom][j] = count
count += 1
bottom -= 1
if left > right or top > bottom:
break
for i in range(top, bottom + 1)[::-1]:
matrix[i][left] = count
count += 1
left += 1
if left > right or top > bottom:
break
return matrix```

## java

```class Solution {
public int[][] generateMatrix(int n) {
int[][] matrix = new int[n][n];
int top = 0;
int bottom = matrix.length - 1;
int left = 0;
int right = matrix[0].length - 1;
int count = 1;
while (true) {
for (int i = left; i <= right; i++) matrix[top][i] = count++;
top++;
if (left > right || top > bottom) break;

for (int i = top; i <= bottom; i++) matrix[i][right] = count++;
right--;
if (left > right || top > bottom) break;

for (int i = right; i >= left; i--) matrix[bottom][i] = count++;
bottom--;
if (left > right || top > bottom) break;

for (int i = bottom; i >= top; i--) matrix[i][left] = count++;
left++;
if (left > right || top > bottom) break;
}

return matrix;
}
}```

79 篇文章17 人订阅

0 条评论

## 相关文章

### 1116 四色问题

1116 四色问题  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解 题目描述 Description 给定N（小于...

2865

1192

772

3484

### leetcode-867-Transpose Matrix（矩阵由按行存储变成按列存储）

Given a matrix A, return the transpose of A.

1462

3048

3023

2864

### POJ1258:Agri-Net-最小生成树

Farmer John has been elected mayor of his town! One of his campaign promises was...

962

1171