本文完全自己学习记录,以便将来回顾(未排版)
思路:从最后一列的首行开始与number比较(比如上图中的数字9),若大于该number,则此列可跳过,继续比较前面一列首行数字,若大于number继续上一步,若小于,则看此列下一行数字,若找到则true,若此列遇到大于number的数字,还未找到number则false。
在这里插入代码片
bool FindNumber(int* matrix,int rows,int columns,int number){
bool found = false;
if(matrix != null && rows>0,columns>0){
int row = 0;//首行开始
int column = columns-1;//尾列开始
while(row < rows && column >= 0){
if(matrix[row*columns + column] == number){
found = true;
break;
}
else if(matrix[row*columns + column]>number){//若此列的首行都大于number,那么整列都大于number,继续看前一列
-- column;
}
else{ //若此列的首行小于number,(matrix[row*columns+column]<number),此时看下一行
++ row;
}
}
return found;
}
}
//代码完全参考《剑指offer》