Search a 2D Matrix

来源:互联网 发布:揭秘网络棋牌骗局 编辑:程序博客网 时间:2024/05/21 17:42

Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:

  • Integers in each row are sorted from left to right.
  • The first integer of each row is greater than the last integer of the previous row.

For example,

Consider the following matrix:

[  [1,   3,  5,  7],  [10, 11, 16, 20],  [23, 30, 34, 50]]

Given target = 3, return true.

使用了二分查找

class Solution {public:bool searchMatrix(vector<vector<int> > &matrix, int target){if (!matrix.size() || target < matrix[0][0]) return false;        int i = 0;for (; i < matrix.size() - 1; i++){if (target >= matrix[i][0] && target < matrix[i + 1][0])break;}int end = matrix[i].size() - 1;if (target > matrix[i][end]) return false;int start = 0;while(start <= end){int mid = (start + end) / 2;if(target == matrix[i][mid])return true;else if (target < matrix[i][mid])end = mid - 1;elsestart = mid + 1;}return false;}};


0 0
原创粉丝点击