-
Notifications
You must be signed in to change notification settings - Fork 181
/
Copy pathMatrix Search
45 lines (38 loc) · 1.22 KB
/
Matrix Search
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/*
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 or equal to the last integer of the previous row.
Example:
Consider the following matrix:
[
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]
Given target = 3, return 1 ( 1 corresponds to true )
Return 0 / 1 ( 0 if the element is not present, 1 if the element is present ) for this problem
*/
int Solution::searchMatrix(vector<vector<int> > &A, int x) {
// Do not write main() function.
// Do not read input, instead use the arguments to the function.
// Do not print the output, instead return values as specified
// Still have a doubt. Checkout www.interviewbit.com/pages/sample_codes/ for more details
int r=A.size(),c=A[0].size();
int row=-1;
for(int i=0;i<r;i++){
if(x>=A[i][0]&&x<=A[i][c-1]){
row=i;
break;
}
}
if(row==-1) return 0;
int low=0,high=c-1;
while(low<=high){
int mid=low+(high-low)/2;
if(A[row][mid]==x) return 1;
if(A[row][mid]<x) low=mid+1;
else high=mid-1;
}
return 0;
}