题解 | #牧场边界巡游#
牧场边界巡游
https://www.nowcoder.com/practice/bc7fe78f7bcc49a8bc0afdd7a55ca810
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param matrix int整型二维数组
* @return int整型一维数组
*/
public static int[] spiralTravelCounterClockwise (int[][] matrix) {
// write code here
LinkedList<Integer> linkedList = new LinkedList<>();
int count = 0;
int m=0;
while (linkedList.size()<matrix.length*matrix[0].length){
int n = count;
for(m = count;m < matrix.length-count;m++){
linkedList.add(matrix[m][n]);
}
m--;
for(n = 1+count;n < matrix[0].length-1-count;n++){
linkedList.add(matrix[m][n]);
}
n = matrix[0].length-1-count;
for(m = matrix.length-1-count;m >= count;m--){
linkedList.add(matrix[m][n]);
}
m++;
for(n = matrix[0].length-2-count;n >= 1+count;n--){
linkedList.add(matrix[m][n]);
}
count++;
}
int[] arr = new int[matrix.length*matrix[0].length];
for(int i=0;i<arr.length;i++){
arr[i] = linkedList.get(i);
}
return arr;
}
}
本题考察的知识点是数组遍历,所用编程语言为java。
首先设立一个循环次数,从左上到坐下,从坐下到右下,再从右下到右上,最后再从右上到左上为一个循环,当此时遍历的循环元素小于数组大小时,此时循环次数加一,继续遍历,直到遍历的元素个数大于数组大小,结束循环。取前数组大小的元素个数重新组成新数组返回,为什么去前面大小的元素个数了,因为有可能会重复遍历,所以取钱数组大小的元素个数


查看17道真题和解析