题解 | #牧场边界巡游#
牧场边界巡游
https://www.nowcoder.com/practice/bc7fe78f7bcc49a8bc0afdd7a55ca810
题目考察的知识点是:
矩阵遍历、模拟算法。
题目解答方法的文字分析:
本题不用深度遍历,使用递归反而麻烦,因为要优先遍历某一行或一列。只要将某一行或列加载到一个循环即可,按照题目要求的逆时针,顺序是【down --> right --> up --> left】,设置四个二层循环。边界条件可以使用二维访问数组。
本题解析所用的编程语言:
java语言。
完整且正确的编程代码:
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param matrix int整型二维数组
* @return int整型一维数组
*/
public int[] spiralTravelCounterClockwise (int[][] matrix) {
// write code here
int m = matrix.length;
int n = matrix[0].length;
int[] res = new int[m * n];
int index = 0;
int up = 0, down = m - 1, left = 0, right = n - 1;
while (index < m * n) {
for (int i = up; i <= down && index < m * n; i++) {
res[index++] = matrix[i][left];
}
left++;
for (int i = left; i <= right && index < m * n; i++) {
res[index++] = matrix[down][i];
}
down--;
for (int i = down; i >= up && index < m * n; i--) {
res[index++] = matrix[i][right];
}
right--;
for (int i = right; i >= left && index < m * n; i--) {
res[index++] = matrix[up][i];
}
up++;
}
return res;
}
}
#题解#
