题解 | #螺旋矩阵#

螺旋矩阵

https://www.nowcoder.com/practice/7edf70f2d29c4b599693dc3aaeea1d31

import java.util.ArrayList;
public class Solution {
    public ArrayList<Integer> spiralOrder(int[][] matrix) {

       if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
            return new ArrayList<>();
        }
        ArrayList<Integer> back = new ArrayList<>();
        int i = matrix.length;
        int j = matrix[0].length ;
        if(i == 1 && j==1) {
            back.add(matrix[0][0]);
            return back;
        }

        for (int k =0; k<(i+1)/2; k++) {
            int l = k;
            for(; l<j-1-k; l++) {
                if(back.size() == i*j) {
                    return back;
                }
                back.add(matrix[k][l]);
            }
            for(int m = k; m<i-k-1; m++) {
                if(back.size() == i*j) {
                    return back;
                }
                back.add(matrix[m][l]);
            }
            // 翻转
            reverseThis (back, k,l,i,j, matrix);
            //break;
            //若是最终相差一个,则把最后一个插入
            if(back.size() == i*j-1 && i==j) {
                back.add(matrix[k+1][k+1]);
            }
        }
        return back;
    }

    /**
     * 翻转
     * @param back
     * @param k 0
     * @param l 2
     * @param i 4
     * @param j 3
     * @param matrix
     */
    private void reverseThis(ArrayList<Integer> back, int k, int l, int i, int j, int[][] matrix) {
        //for(int m = j; m<j-1; m++)
        int m = l;
        for(; m > k; m--) {
            if(back.size() == i*j) {
                return ;
            }
            back.add(matrix[i-1-k][m]);
        }
        for(int n = i-1-k; n>k; n--) {
            if(back.size() == i*j) {
                return ;
            }
            back.add(matrix[n][m]);
        }

    }

}

全部评论

相关推荐

昨天 15:52
东南大学 C++
点赞 评论 收藏
分享
吐泡泡的咸鱼:我也工作了几年了,也陆陆续续面试过不少人,就简历来说,第一眼学历不太够,你只能靠你的实习或者论文或者项目经历,然后你没有论文,没有含金量高的比赛和奖项,只能看实习和项目,实习来说,你写的实习经历完全不清楚你想找什么工作?行研?数据分析?且写的太少了,再看项目,这些项目先不说上过大学读过研究生的都知道很水,然后对你想找的岗位有什么帮助呢?项目和实习也完全不匹配啊,你好像在努力将你所有的经历都放在简历里想表现你的优秀,但是对于你想找的岗位来说,有什么用呢?最后只能获得岗位不匹配的评价。所以你需要明白你想要找的岗位要求是什么,是做什么的,比如产品经理,然后再看你的经历里有什么匹配的上这个岗位,或者对这个岗位以及这个岗位所在的公司有价值,再写到你的简历上
点赞 评论 收藏
分享
ResourceUtilization:四六级不愧是大学最有用的证之一
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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