• 按行遍历;
  • 二分查找每一行中是否有目标值;
  • 如果找到返回true,否则遍历结束返回false。
class Solution {
public:
    bool hasFind(int target, vector<int> arr) {
        int i = 0, j = arr.size();
        
        while (i < j) {
            int mid = i + (j - i) / 2;
            if (target < arr[mid]) {
                j = mid;
            }
            else if (target > arr[mid]) {
                i = mid + 1;
            }
            else {
                return true;
            }
        }
        return false;
    }
    bool Find(int target, vector<vector<int> > array) {
        for (int i = 0; i < array.size();i++) {
            if (hasFind(target, array[i])) {
                return true;
            }
        }
        return false;
    }
};