[LeetCode] Search a 2D Matrix
2014-11-06 15:33
239 查看
class Solution { public://先找行,再找列 时间复杂度O(logn + logm) bool searchMatrix(vector<vector<int> > &matrix, int target) { int i = row(matrix,target); if(i == -1) return false; bool res = find(matrix[i],target); return res; } int row(vector<vector<int> > &matrix,int target){ int n = matrix.size(); int first = 0,end = n - 1,mid; while(first <= end){ mid = (first + end)/2; if(matrix[mid][0] <= target){ if((mid < n - 1 && target < matrix[mid + 1][0]) || mid == n - 1) return mid; else first = mid + 1; } else if(matrix[mid][0] > target) end = mid - 1; } return -1; } bool find(vector<int> &A,int target){ int n = A.size(); int first = 0,end = n - 1,mid; while(first <= end){ mid = (first + end)/2; if(A[mid] == target) return true; else if(A[mid] > target) end = mid - 1; else first = mid + 1; } return false; } };
方法2:
class Solution { public://时间复杂度O(n + m) bool searchMatrix(vector<vector<int> > &matrix, int target) { int i = 0, j = matrix[0].size() - 1; while (i < matrix.size() && j >= 0) { if (target == matrix[i][j]) return true; else if (target < matrix[i][j]) j--; else i++; } return false; } };关于此问题的讨论 http://leetcode.com/2010/10/searching-2d-sorted-matrix.html
相关文章推荐
- leetcode 【Search a 2D Matrix 】python 实现
- [Leetcode] Search a 2D Matrix
- leetcode - Search a 2D Matrix
- LeetCode 74 Search a 2D Matrix(Python详解及实现)
- [leetcode]Search a 2D Matrix
- 【LeetCode】Search a 2D Matrix
- [LeetCode74]Search a 2D Matrix
- leetcode-74 Search a 2D Matrix
- Leetcode之Search a 2D Matrix 问题
- LeetCode | Search a 2D Matrix
- Search a 2D Matrix leetcode java
- LEETCODE: Search a 2D Matrix
- [LeetCode] Search a 2D Matrix
- Search a 2D Matrix - Leetcode
- LeetCode(074) Search a 2D Matrix (Java)
- Leetcode-Search a 2D Matrix
- [LeetCode]Search a 2D Matrix
- [LeetCode]Search a 2D Matrix
- Leetcode-74. Search a 2D Matrix
- 《leetCode》:Search a 2D Matrix