Leetcode 74.搜索二維矩陣
阿新 • • 發佈:2018-12-23
spa 一個 == -s turn 二維矩陣 pty 高效 else
搜索二維矩陣
編寫一個高效的算法來判斷 m x n 矩陣中,是否存在一個目標值。該矩陣具有如下特性:
- 每行中的整數從左到右按升序排列。
- 每行的第一個整數大於前一行的最後一個整數。
示例 1:
輸入:
matrix = [
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]
target = 3
輸出: true
兩次二分搜索
1 class Solution{ 2 public: 3 bool searchMatrix(vector<vector<int>> &matrix, inttarget){ 4 if (matrix.empty() || matrix[0].empty()) return false; 5 if (target<matrix[0][0] || target>matrix.back().back()) return false; 6 int left = 0, right = matrix.size() - 1; 7 while (left <= right){ 8 int mid = (left + right) / 2; 9 if(matrix[mid][0] == target) return true; 10 else if (matrix[mid][0]<target) left = mid + 1; 11 else right = mid - 1; 12 } 13 int tmp = right; 14 left = 0; 15 right = matrix[tmp].size() - 1; 16 while (left <= right){ 17 intmid = (left + right) / 2; 18 if (matrix[tmp][mid] == target) return true; 19 else if (matrix[tmp][mid]<target) left = mid + 1; 20 else right = mid - 1; 21 } 22 return false; 23 } 24 };
Leetcode 74.搜索二維矩陣