Leetcode: Search a 2D Matrix
2015-04-10 23:48
501 查看
题目:
Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:
For example,
Consider the following matrix:
Given target = 3, return true.
思路分析:
这道题不难!我的做法是这样的:首先遍历矩阵的第一列确定给定数字可能存在哪一行,然后利用二分法在该行进行搜索。
C++参考代码:
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.
For example,
Consider the following matrix:
[ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50] ]
Given target = 3, return true.
思路分析:
这道题不难!我的做法是这样的:首先遍历矩阵的第一列确定给定数字可能存在哪一行,然后利用二分法在该行进行搜索。
C++参考代码:
class Solution { public: bool searchMatrix(vector<vector<int> > &matrix, int target) { int rows = int(matrix.size()); int row = 0; bool flag = false;//标志是否有某一行的第一个数字比给定的数字大 for (int i = 0; i < rows; ++i) { if (matrix[i][0] == target) return true; if (matrix[i][0] > target) { row = i; flag = true; break; } } //这里是对特殊情况的处理:如果每一行的第一个数字都比给定数字小,那么说明给定数字有可能在最后一行 //如果falg=true而且row=1,说明第一行的第一个数字比给定数字大,那么矩阵中肯定不存在给定数字,直接返回false if (flag && row == 0) return false; else if (!flag) row = rows; //下面是对矩阵第row - 1行进行二分查找的过程 int left = 0; int right = int(matrix[row - 1].size()) - 1; int middle = right / 2; while (left <= right) { middle = (left + right) / 2; if (matrix[row - 1][middle] > target) right = middle - 1; else if (matrix[row - 1][middle] < target) left = middle + 1; else return true; } return false; } };
相关文章推荐
- [leetcode] Search a 2D Matrix
- leetcode-Search a 2D Matrix(2014.2.23)
- leetcode - Search a 2D Matrix
- LeetCode——Search a 2D Matrix
- LeetCode刷题【Array】Search a 2D Matrix
- Leetcode -- Search a 2D Matrix
- LeetCode - 74/240 - Search a 2D Matrix
- [LeetCode]Search a 2D Matrix
- [leetcode]Search a 2D Matrix
- LeetCode Search a 2D Matrix
- [leetcode] Search a 2D Matrix
- leetcode编程记录20 #74 Search a 2D Matrix
- 【LeetCode】Search a 2D Matrix && 【九度】题目1384:二维数组中的查找
- Search a 2D Matrix ——LeetCode
- [LeetCode] Search a 2D Matrix
- 【LeetCode】74. Search a 2D Matrix 解题报告(Python)
- LeetCode 74. Search a 2D Matrix(搜索矩阵)
- [leetcode] Search a 2D Matrix
- [Leetcode]Search a 2D Matrix
- leetcode 74. Search a 2D Matrix