题目说明:
二维数组特点:
每行从左到右递增有序
每列从上到下递增有序
如:
1 2 8 9
2 4 9 12
4 7 10 13
6 8 11 15
解法一:
//从右上角开始查找 bool FindNum(int *matrix,int rows,int columns,int number) { bool found = false; if (matrix != NULL && rows > 0 && columns > 0) //首先确定参数合法 { int row = 0; int col = columns - 1; while (row < rows && col >= 0) { if (matrix[row * columns + col] == number) { found = true; break; } else if (matrix[row * columns + col] > number) -- col; else ++ row; } } return found; }
解法二:
//从左下角开始查找: bool FindNum(int *matrix,int rows,int columns,int number) { bool found = false; if (matrix != NULL && rows > 0 && columns > 0) { int row = rows - 1; int col = 0; while (row >= 0 && col < columns) { if (matrix[row * columns + col] == number) { found = true; break; } else if (matrix[row * columns + col] > number) -- row; else ++ col; } } return found; }
转载于:https://blog.51cto.com/zhujifang/1380191