zoukankan      html  css  js  c++  java
  • [LeetCode]螺旋矩阵

    题目

     

    代码 

    class Solution {
    public:
        vector<int> spiralOrder(vector<vector<int>>& matrix) {
            if (matrix.empty() || matrix[0].empty()) return {};
            int height = matrix.size(), width = matrix[0].size();
            vector<int> res;
            int up = 0, down = height - 1, left = 0, right = width - 1;
            while (true) {
                //从左往右
                for(int j=left;j<=right;j++)
                   res.push_back(matrix[up][j]);
                //上面大于下面
                if(++up>down)
                    break;
                
                //从右上往右下
                for(int i=up;i<=down;i++)
                    res.push_back(matrix[i][right]);
                //右边小于左边
                if(--right<left)
                    break;
                
                //从右下往左下
                for(int j=right;j>=left;j--)
                    res.push_back(matrix[down][j]);
                //下边小于上面
                if(--down<up)
                    break;
                
                //从左下往左上
                for(int i=down;i>=up;i--)
                    res.push_back(matrix[i][left]);
                //左边超过了右边
                if(++left>right)
                    break;
            }
            return res;
        }
    };

     思路

    每次遍历一行或者一列之后,需要调整边界大小(up,down,right,left四个边),并且判断是否已经遍历完成(当up>down,left>right说明要超出边界了,已经遍历完成所有)。 

  • 相关阅读:
    html中script标签的使用方法
    css关于浮动的高度塌陷
    canvas用数组方式做出下雨效果
    canvas简易画板。
    html5新标签
    闭包的意义及用法
    字符串的添加方法
    js几种数组遍历方法.
    简易网页打卡页面.
    回忆继承多态
  • 原文地址:https://www.cnblogs.com/lizhenghao126/p/11053581.html
Copyright © 2011-2022 走看看