螺旋矩阵

*********

给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。

示例 1:

示例 2:

思路: 定义left,right,top,bottom四个边界,然后循环,每次循环结束后将边界移动。

class Solution {
    public List<Integer> spiralOrder(int[][] matrix) {
        if(matrix.length==0)
            return new ArrayList<Integer>();
    int left=0;//左边界
    int right=matrix[0].length-1;//右边界
    int top=0;//上边界
    int bottom=matrix.length-1;//下边界
    int x=0;//用来计数
    Integer[] res=new Integer[(right+1)*(bottom+1)];
    while(true){
        //从left到right
        for(int i=left;i<=right;i++) res[x++]=matrix[top][i];
        if(++top>bottom) break;
        //从top到bottom
        for(int i=top;i<=bottom;i++) res[x++]=matrix[i][right];
        if(left>--right)break;
        //从right到left
        for(int i=right;i>=left;i--) res[x++]=matrix[bottom][i];
        if(top>--bottom)break;
        //从bottom到top
        for(int i=bottom;i>=top;i--) res[x++]=matrix[i][left];
        if(++left>right)break;
    }
    return Arrays.asList(res);
    }
}

************

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。

class Solution {
    public int[][] generateMatrix(int n) {
        //初始化边界条件
        int left=0;
        int top=0;
        int right=n-1;
        int bottom=n-1;
        //初始化n*n大小的矩阵
        int[][] res=new int[n][n];
        int nums=1;
        int tar=n*n;
        while(true){
            //left to right
            for(int i=left;i<=right;i++) res[top][i]=nums++;
            if(++top>bottom) break;
            //top to bottom
            for(int i=top;i<=bottom;i++) res[i][right]=nums++;
            if(left>--right)break;
            //right to left
            for(int i=right;i>=left;i--) res[bottom][i]=nums++;
            if(top>--bottom)break;
            //bottom to top
            for(int i=bottom;i>=top;i--) res[i][left]=nums++;
            if(++left>right)break;
        }
        return res;
    }
}

全部评论

相关推荐

rbjjj:太杂了吧,同学,项目似乎都没深度,都是api调度耶,分层架构思想没有体现出来了,前端没有前端优化前端工程化体现,后端微服务以及分层架构没体现以及数据安全也没体现,核心再改改,注重于计算机网络,工程化,底层原理吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务