[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30] ]
观察,从左到右递增,从上到下递增。
似乎找不到什么其他规律。
第一想法是二分,笨方法。
感觉这个是有序数组求两个数的和为sum的扩展。巧妙啊!看了题解才会的。
观察左下角或者右下角的元素。所有比18大的,都在18右边。比18小的都在它上边。
只能感叹啊!什么时候能有这样的功力呢?
bool searchMatrix(int** a, int m, int n, int target) { if(m * n == 0) return false; int i = m-1; int j = 0; while( i >=0 && j< n) { if(a[i][j] == target) return true; if(a[i][j] > target) i--; else j++; } return false; }