Create 74. Search a 2D Matrix.md

This commit is contained in:
唐树森 2019-02-21 19:40:18 +08:00 committed by GitHub
parent 3eb44bc8d3
commit dc8a1b482a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -0,0 +1,24 @@
# [74. Search a 2D Matrix](https://leetcode.com/problems/search-a-2d-matrix/)
# 思路
就是一个二分查找。将矩阵展开成一个很长的有序数组下标low从0开始下标high从`m*n - 1`开始然后二分查找中间下标mid对应的元素为`matrix[mid / n][mid % n]`。
时间复杂度O(log(mn))空间复杂度O(1)
# C++
``` C++
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
if(matrix.empty()) return false;
int m = matrix.size(), n = matrix[0].size();
int low = 0, high = m * n - 1;
while(low <= high){
int mid = (high - low) / 2 + low;
int tmp = matrix[mid / n][mid % n];
if(tmp == target) return true;
if(tmp < target) low = mid + 1;
else high = mid - 1;
}
return false;
}
};
```