Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:
For example,
Consider the following matrix:
[ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50] ]
Given target = 3, return true.
1 class Solution {
2 public:
3 bool searchMatrix(vector<vector<int>>& matrix, int target) {
4 if(matrix.size() == 0){
5 return false;
6 }
7 if(matrix[0].size() == 0){
8 return false;
9 }
10
11 int rowNumber = 0;
12 int colNumber = matrix[0].size()-1;
13
14 while(rowNumber < matrix.size() && colNumber >= 0){
15
16 if(matrix[rowNumber][colNumber] > target){
17 colNumber--;
18 }else if(matrix[rowNumber][colNumber] < target){
19 rowNumber++;
20 }else{
21 return true;
22 }
23 }
24 return false;
25 }
26 };