//思路:先比较对角线元素。找一个比他大一点比他小一点的。两个矩阵都不会存在这个数,从剩下的数字里面找
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
int diff[array[0].size()-1];
for(int i=0;i<array[0].size();i++){
diff[i]=target-array[i][i];
if(diff[i] == 0){//找到了
return true;}}
//下面开始找diff中负数中最大的元素
int max=diff[0];
int minposition=0;
for(int i=0;i<array[0].size();i++){
if (diff[i]<0){
if (diff[i]>max){
minposition=i;
max=diff[i];
}
}}
//下面开始找diff中正数最小的元素
int min=diff[array[0].size()-1];
int maxposition=0;
for(int i=0;i<array[0].size();i++)
{if (diff[i]>0){
if (diff[i]<min){
maxposition=i;
min=diff[i];
}
}
}
//从剩下的两个矩阵里面遍历
for (int m =0;m<minposition;m++){
for(int n=maxposition;n<array[0].size();n++){
if (array[m][n]==target)
{return true;}
}
}
for (int n=maxposition;n<array[0].size();n++){
for (int m =0;m<minposition;m++){
if (array[n][m]==target)
{ return true;}
}
}
return false;
}
};
哪里错了啊
最新推荐文章于 2025-09-26 08:39:44 发布
1378

被折叠的 条评论
为什么被折叠?



