基础题,居然也卡了一会。
题意:给出一个二维数组,然后判断二维数组左边和上边的数从左上到右下的数是否相等,如果满足就返回true,不满足返回false。
用一个二维的vector,首先判断竖的第一列,从上往下,依次判断。从左上到右下,数组时matrix[i][0]到matrix[i+j][j],注意i+j和j的范围,因此i+j<h,j<w。同理对于第一行也是如此,只不过从matrix[0][i]到matrix[j][i+j],j<h,i+j<w。只要有一个不满足就立即返回false。
class Solution {
public:
bool isToeplitzMatrix(vector<vector<int>>& matrix) {
if(matrix.empty())
return false;
const int h=matrix.size();
const int w=matrix[0].size();
for(int i=0;i<h;i++)
{
for(int j=1;j+i<h&&j<w;j++)
{
if(matrix[i+j][j]!=matrix[i][0])
{
return false;
}
}
}
for(int i=1;i<w;i++)
{
for(int j=1;i+j<w&&j<h;j++)
{
if(matrix[0][i]!=matrix[j][i+j])
{
return false;
}
}
}
return true;
}
};