leetcode766
本题经过一下午的思考,终于解出来了。使用的是层次遍历的思想。
class Solution {
public:
bool isToeplitzMatrix(vector<vector<int>>& matrix) {
int RowLen = matrix.size() - ;
int ColLen = matrix[].size() - ;
int N = RowLen + ColLen;
int i = RowLen;
int j = ;
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[].first][V[].second];
set<pair<int, int>> S;
for (auto v : V)
{
//判断是否都是相同的数值
if (base != matrix[v.first][v.second])
{
return false;
} //判断“上”和“右”的元素是否合法,
int Up_x = v.first - ;
int Up_y = v.second;
//“上元素”合法则加入S(去重)
if (Up_x >= && 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 + ;
//“右元素”合法则加入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;
}
};
leetcode766的更多相关文章
- [Swift]LeetCode766. 托普利茨矩阵 | Toeplitz Matrix
A matrix is Toeplitz if every diagonal from top-left to bottom-right has the same element. Now given ...
- 算法22-----托普利茨矩阵leetcode766
1.题目 如果一个矩阵的每一方向由左上到右下的对角线上具有相同元素,那么这个矩阵是托普利茨矩阵. 给定一个 M x N 的矩阵,当且仅当它是托普利茨矩阵时返回 True. 示例 1: 输入: matr ...
- Leetcode766.Toeplitz Matrix托普利茨矩阵
如果一个矩阵的每一方向由左上到右下的对角线上具有相同元素,那么这个矩阵是托普利茨矩阵. 给定一个 M x N 的矩阵,当且仅当它是托普利茨矩阵时返回 True. 示例 1: 输入: matrix = ...
随机推荐
- Linux命令2018-03-01更新
前言:Linux主要应用于服务器端,嵌入式开发和个人pc桌面端 本人wechat:YWNlODAyMzU5MTEzMTQ=. *** GPL GPL是一个开源许可协议,由自由软件基金会创建的.GPL许 ...
- Linux SVN 切换用户
1. 临时切换 在所有命令前强制加上--username 和 --password 例如:svn up --username zhangsan --password 123456 2. 永久切 ...
- DataBase project physical design
DataBase physical design //Table: /*student*/ create table student( id int not null primary key, /*学 ...
- static才是对代码的提升
static才是对代码的提升 static的作用有如下三条: 1):隐藏. 当编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性. 一个是a.c,另一个是main.c. 下面是a ...
- win10环境变量的配置
c盘->环境变量: 1.添加变量名和变量值 变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.8.0_161 2.添加变量名和变量值 变量名:JAVA_H ...
- HTML标签01
html标签:table 表格 (里面加的属性指整个表格的)tr 行td 单元格 (可以换成th,只有在单元格里面才能输入文字)th 表头 默认让文字居中 文字还会显示加粗状态 font 文字标签 属 ...
- 为什么新生代内存需要有两个Survivor区?
对于常见的GC算法,我们都应该知道,例如:标记清除算法.复制算法.标记整理算法等.标记清除算法由于回收之后存在大量的内存碎片,存在效率和空间问题!为了解决效率问题,引出了复制算法!熟悉GC算法的小伙伴 ...
- HttpClient超时设置
场景:最近并发较高,看到响应时间6s的时候,心里咯噔一下,我记得我设置的超时时间是5s啊. 原来读取超时时间没生效,只生效了连接超时时间. ConnectionPoolTimeoutExcepti ...
- DLatch by Verilog
//-----------------------------------------------------// Design Name : dlatch_reset// File Name : ...
- 远程debug配置
1. 第一步,debugconfig 2. 在启动文件中添加 Set JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=,server=y ...