74. Search a 2D Matrix

来源:互联网 发布:java 数组排序 编辑:程序博客网 时间:2024/06/10 19:25
/*思想就是二分查找法,先找到可能所在的行,然后在这行中再运用二分查找,一种特殊情况就是最小数字比查找值大的情况*/class Solution {public:    bool searchMatrix(vector<vector<int>>& matrix, int target) {    if (matrix.empty()|| matrix[0].empty())return false;if(matrix[0][0]>target)//最小数字比查找值大的情况return false;    int up = 0;int down = matrix.size() - 1;int flag = 0;while (up <= down){flag = (up + down) / 2;if (matrix[flag][0] == target)return true;else if (matrix[flag][0] < target)up = flag+1;elsedown = flag-1;}int left = 0;int right = matrix[down].size() - 1;while (left <= right){flag = (left + right) / 2;if (matrix[down][flag] == target)return true;else if (matrix[down][flag] < target)left = flag+1;elseright = flag-1;}return false;    }};

0 0