• 螺旋矩阵


    螺旋矩阵

    原题54. 螺旋矩阵 - 力扣(LeetCode) (leetcode-cn.com)

    image-20211005184530695

    记着很久以前在蓝桥遇到这个题目的时候,是建立一个二维数组来记录搜过的地方,观察什么时候需要”拐弯“。那时不用数组总是报错,现在我把以前的路走一遍,先看代码;

    class Solution {
        public List<Integer> spiralOrder(int[][] matrix) {
            int i = matrix[0].length + 1;
            int j  = matrix.length;
            int a = 0;
            int b = -1;
            List<Integer> list = new ArrayList<>();
            while(true){
                i -- ;
                if(i == 0) return list;
                for(int x = 0;x<i;x++){
                    list.add(matrix[a][++b]);
                }
    
                j -- ;
                if(j == 0) return list;
                for(int x = 0;x<j;x++){
                    list.add(matrix[++a][b]);
                }
    
                i -- ;
                if(i == 0) return list;
                for(int x = 0;x<i;x++){
                    list.add(matrix[a][--b]);
                }
    
                j -- ;
                if(j == 0) return list;
                for(int x = 0;x<j;x++){
                    list.add(matrix[--a][b]);
                }
            }
        }
    }
    

    image-20211005185719462

    我们一圈一圈的搜索,矩阵垂直方向和竖直方向个数如上图所示都是递减的。

    i,j 和 坐标(a,b)都是先变化在计算,所以初始化的时候要指定偏移量。

    (a,b)坐标的初始化(0,-1)

    int i = matrix[0].length + 1;

    int j = matrix.length;

    感觉没什么难的,还是以前太菜了。

  • 相关阅读:
    Redis学习小结
    抽屉模型
    用户提交数据的验证
    jsonp原理与实验
    文件上传
    项目
    CBV
    C++算法 线段树
    写一些奇怪的东西找到的奇怪的错误
    php安装过程出现的一些错误问题:
  • 原文地址:https://www.cnblogs.com/adamr/p/15369398.html
Copyright © 2020-2023  润新知