### Problem

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

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

### Example

**Input ::**

[

[1, 3, 5, 7],

[10, 11, 16, 20],

[23, 30, 34, 50]

]

Given target = 3, return

**true**.### JavaScript Code

function searchMatrix(matrix, target) { if(matrix==null || matrix.length==0 || matrix[0].length==0) return false; var m = matrix.length; var n = matrix[0].length; var start = 0; var end = m*n-1; while(start<=end){ var mid=parseInt((start+end)/2); var midX=parseInt(mid/n); var midY=mid%n; if(matrix[midX][midY]==target) return true; if(matrix[midX][midY]<target){ start=mid+1; } else { end=mid-1; } } return false; }

You are awesome really :)

ReplyDelete