74. Search a 2D Matrix
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.
Example 1:
1 2 3 4 5 6 7 8
| Input: matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50] ] target = 3 Output: true
|
Example 2:
1 2 3 4 5 6 7 8
| Input: matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50] ] target = 13 Output: false
|
Code:
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
| class Solution(object): def searchMatrix(self, matrix, target): """ :type matrix: List[List[int]] :type target: int :rtype: bool """ if not matrix or target is None: return False
rows, cols = len(matrix), len(matrix[0]) low, high = 0, rows * cols - 1
while low <= high: mid = (low + high) / 2 num = matrix[mid / cols][mid % cols]
if num == target: return True elif num < target: low = mid + 1 else: high = mid - 1
return False
|