zoukankan      html  css  js  c++  java
  • leecode第五十四题(螺旋矩阵)

    class Solution {
    public:
        vector<int> spiralOrder(vector<vector<int>>& matrix) {
            vector<int> res;
            int len1=matrix.size();//如果是[[]]边界条件,len1=1,len2=0的,后面虽然边界没有反映,但是依然会返回空数组
            if(len1==0)
                return res;
            int len2=matrix[0].size();//但如果[]边界条件,len1=0,len2那句话就卡死了,所以这个len1==0的判断要放在求len2前面,错过
            
            if(len1==1 && len2==1)
            {
                res.push_back(matrix[0][0]);
                return res;
            }
            
            for(int i=0;i<((min(len1,len2)+1)/2);i++)//根据分析,每一个最外层显示完毕后,下一个是【i,i】为开头的内心的显示,没用递归,嫌麻烦,写成循环了
            {
                for(int j=i;j<(len2-i);j++)//第一行(从左到右)
                    res.push_back(matrix[i][j]);
                
                if((len1-2*i)>1)//最后一列(从上到下),注意开头被第一行的尾巴显示过了
                {
                    for(int j=i+1;j<(len1-i);j++)
                        res.push_back(matrix[j][len2-1-i]);
                }
                
                if((len2-2*i)>1 && (len1-2*i)>1)//最后一行(从右往左),注意开头被最后一列的尾巴显示过了
                {
                    for(int j=(len2-2-i);j>=i;j--)
                        res.push_back(matrix[len1-1-i][j]);
                }
                
                if((len1-2*i-1)>1 && (len2-2*i)>1)//第一列(从下往上),注意开头和结尾都被别人显示过了
                {
                    for(int j=(len1-2-i);j>i;j--)
                        res.push_back(matrix[j][i]);
                }
                //上述这些虽然看起来复杂,但是只要画图,思路清晰就能写出来
                //要注意每个判断、索引啥的,都得考虑i的值
                //要注意第一行不需要判断,因为一定存在,最后一列只要判断行数够不够即可
                //最后一行和第一列要判断行数、列数两个条件都够不够,错过
            }
            
            return res;
        }
    };

    分析:

    如注释,错了两处,惭愧啊,这个还在剑指offer看过,第二个这种错误还能犯,注意力太不集中了,第一个倒是头疼了一下,cout检测过程中突然想到的。

    状态不好,晚上还得开周会,今天不做了。

  • 相关阅读:
    Spark dataframe【KV格式】模拟实现Map操作
    Spark之谓词下推
    Spark之YARN提交模式
    Anaconda安装sasl,thrift,thrift-sasl,PyHive连接Hive
    Hive之FAILED: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient异常
    Hive分区
    HBase架构设计
    HDFS快速入门
    电力系统【第2章:电力系统各元件的参数和数学模型】
    HBase最佳实践之Scan
  • 原文地址:https://www.cnblogs.com/CJT-blog/p/10594822.html
Copyright © 2011-2022 走看看