我是靠谱客的博主 受伤枕头,最近开发中收集的这篇文章主要介绍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列),按螺旋的顺序返回矩阵中的所有元素。所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部