mirror of
https://github.com/CyC2018/Interview-Notebook.git
synced 2026-10-30 07:33:45 +00:00
Update 29. 顺时针打印矩阵.md
题目链接改为力扣中的对应题目,题目描述和代码按该题的接口调整。
This commit is contained in:
+29
-15
@@ -2,7 +2,7 @@
|
||||
|
||||
## 题目链接
|
||||
|
||||
[牛客网](https://www.nowcoder.com/practice/9b4c81a02cd34f76be2659fa0d54342a?tpId=13&tqId=11172&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking&from=cyc_github)
|
||||
[Leetcode](https://leetcode.cn/problems/shun-shi-zhen-da-yin-ju-zhen-lcof/)
|
||||
|
||||
## 题目描述
|
||||
|
||||
@@ -19,25 +19,39 @@
|
||||
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/image-20201104010609223.png" width="500px"> </div><br>
|
||||
|
||||
```java
|
||||
public ArrayList<Integer> printMatrix(int[][] matrix) {
|
||||
ArrayList<Integer> ret = new ArrayList<>();
|
||||
int r1 = 0, r2 = matrix.length - 1, c1 = 0, c2 = matrix[0].length - 1;
|
||||
public int[] spiralArray(int[][] array) {
|
||||
if (array == null || array.length == 0 || array[0].length == 0) {
|
||||
return new int[0];
|
||||
}
|
||||
int m = array.length, n = array[0].length;
|
||||
int[] ret = new int[m * n];
|
||||
int idx = 0;
|
||||
int r1 = 0, r2 = m - 1, c1 = 0, c2 = n - 1;
|
||||
while (r1 <= r2 && c1 <= c2) {
|
||||
// 上
|
||||
for (int i = c1; i <= c2; i++)
|
||||
ret.add(matrix[r1][i]);
|
||||
for (int i = c1; i <= c2; i++) {
|
||||
ret[idx++] = array[r1][i];
|
||||
}
|
||||
// 右
|
||||
for (int i = r1 + 1; i <= r2; i++)
|
||||
ret.add(matrix[i][c2]);
|
||||
if (r1 != r2)
|
||||
for (int i = r1 + 1; i <= r2; i++) {
|
||||
ret[idx++] = array[i][c2];
|
||||
}
|
||||
if (r1 != r2) {
|
||||
// 下
|
||||
for (int i = c2 - 1; i >= c1; i--)
|
||||
ret.add(matrix[r2][i]);
|
||||
if (c1 != c2)
|
||||
for (int i = c2 - 1; i >= c1; i--) {
|
||||
ret[idx++] = array[r2][i];
|
||||
}
|
||||
}
|
||||
if (c1 != c2) {
|
||||
// 左
|
||||
for (int i = r2 - 1; i > r1; i--)
|
||||
ret.add(matrix[i][c1]);
|
||||
r1++; r2--; c1++; c2--;
|
||||
for (int i = r2 - 1; i > r1; i--) {
|
||||
ret[idx++] = array[i][c1];
|
||||
}
|
||||
}
|
||||
r1++;
|
||||
r2--;
|
||||
c1++;
|
||||
c2--;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user