我是靠谱客的博主 受伤枕头,最近开发中收集的这篇文章主要介绍Java 螺旋矩阵:给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
题目:
给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。
思路:
这个题目解题思路的关键就是遍历条件和停止条件
sum获取整个矩阵中数字个数,每遍历一个数就减一,当为零时,结束遍历。
xmin,xmax,ymin,ymax 的++或–操作用来去掉已经遍历过的数字
public static ArrayList<Integer> spiralOrder(int[][] matrix) {
ArrayList<Integer> list = new ArrayList<>();//用来存数,做返回
if(matrix.length==0)
return list;
int xmin = 0, xmax = matrix.length - 1;
int ymin = 0, ymax = matrix[0].length - 1;
int sum = (xmax + 1) * (ymax + 1);
do {
for (int i = ymin; i <= ymax; i++, sum--) {//从左到右遍历一行
list.add( matrix[xmin][i]);
if (sum == 0) break;
}if (sum == 0) break;
xmin++;//修改xmin去掉已经遍历过的一行
for (int i = xmin; i <= xmax; i++, sum--) {//从上到下遍历一列
list.add(matrix[i][ymax]);
if (sum == 0) break;
}if (sum == 0) break;
ymax--;
for (int i = ymax; i >= ymin; i--, sum--) {//从右到左遍历一行
list.add( matrix[xmax][i]);
if (sum == 0) break;
}if (sum == 0) break;
xmax--;
for (int i = xmax; i >= xmin; i--, sum--) {//从下到上遍历一列
list.add( matrix[i][ymin]);
if (sum == 0) break;
}if (sum == 0) break;
ymin++;
} while (sum > 0);
return list;
}
最后
以上就是受伤枕头为你收集整理的Java 螺旋矩阵:给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。的全部内容,希望文章能够帮你解决Java 螺旋矩阵:给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复