• leetcode766


    本题经过一下午的思考,终于解出来了。使用的是层次遍历的思想。

    class Solution {
    public:
        bool isToeplitzMatrix(vector<vector<int>>& matrix) {
            int RowLen = matrix.size() - 1;
            int ColLen = matrix[0].size() - 1;
            int N = RowLen + ColLen;
            int i = RowLen;
            int j = 0;
            queue<pair<int, int>> Q;
    
            Q.push(make_pair(i, j));
            while (!Q.empty())
            {
                //全部出队,加入vector
                vector<pair<int, int>> V;
                while (!Q.empty())
                {
                    pair<int, int> p = Q.front();
                    Q.pop();
                    V.push_back(p);
                    cout << p.first << " " << p.second << endl;
                }
                cout << "------------------------------------------" << endl;
    
                //遍历V
                int base = matrix[V[0].first][V[0].second];
                set<pair<int, int>> S;
                for (auto v : V)
                {
                    //判断是否都是相同的数值
                    if (base != matrix[v.first][v.second])
                    {
                        return false;
                    }
    
                    //判断“上”和“右”的元素是否合法,
                    int Up_x = v.first - 1;
                    int Up_y = v.second;
                    //“上元素”合法则加入S(去重)
                    if (Up_x >= 0 && S.find(make_pair(Up_x, Up_y)) == S.end())
                    {
                        S.insert(make_pair(Up_x, Up_y));
                    }
    
                    int Right_x = v.first;
                    int Right_y = v.second + 1;
                    //“右元素”合法则加入S(去重)
                    if (Right_y <= ColLen && S.find(make_pair(Right_x, Right_y)) == S.end())
                    {
                        S.insert(make_pair(Right_x, Right_y));
                    }
                }
    
                //将S中的元素,添加到Q中
                for (auto s : S)
                {
                    Q.push(s);
                }
            }
            return true;
        }
    };
  • 相关阅读:
    我的第一个开源项目
    读headFirst设计模式
    读headFirst设计模式
    读headFirst设计模式
    eclipse中svn插件的安装和tortoiseSVN的安装
    读headFirst设计模式
    浅析博客园的保存密码并自动登录, 然后自己写一个demo
    java中易遗忘的知识,不定时更新……
    POI操作Excel
    java泛型基础
  • 原文地址:https://www.cnblogs.com/asenyang/p/9719923.html
Copyright © 2020-2023  润新知