从左下角搜索到右上角(反过来也可以,原理一样)。因为数组从上到下、从左到右是有序的,所以如果当前查找的数大于target,那么其上方的数也一定会大于target;如果当前查找的数小于target,那么其左边的数也一定会小于target。
bool Find(int target, int** array, int arrayRowLen, int* arrayColLen ) {
int m = arrayRowLen - 1, n = 0;
while (m >= 0 && n < *arrayColLen) {
if (array[m][n] == target) return true;
else if (array[m][n] > target) m--;
else n++;
}
return false;
}

京公网安备 11010502036488号