leetcode刷题 总结 记录 备忘 74
2015-08-05 19:08
288 查看
leetcode74
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:
Given target =
二分查找,不是特别困难,考虑下二维数组只有一个元素和一维数组只有一个元素的特殊情况就可以了。如果二维数组只有一个元素,直接find这个一维数组即可。如果一维数组只有一个元素,直接等号进行判断,如果不是再根据大小确定下一个二分查找的段即可。
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.
For example,
Consider the following matrix:
[ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50] ]
Given target =
3, return
true.
二分查找,不是特别困难,考虑下二维数组只有一个元素和一维数组只有一个元素的特殊情况就可以了。如果二维数组只有一个元素,直接find这个一维数组即可。如果一维数组只有一个元素,直接等号进行判断,如果不是再根据大小确定下一个二分查找的段即可。
class Solution { public: bool searchMatrix(vector<vector<int>>& matrix, int target) { if (matrix.size() == 0) return false; if (matrix.size() == 1) { if (find(matrix[0].begin(), matrix[0].end(), target) == matrix[0].end()) return false; else return true; } int beg = 0, end = matrix.size() - 1; while (beg <= end) { int mid = (beg + end) / 2; if (matrix[mid].size() == 1) { if (target == matrix[mid][0]) return true; else if (target > matrix[mid][0]) beg = mid + 1; else if (target < matrix[mid][0]) end = mid - 1; continue; } if (target >= *(matrix[mid].begin()) && target <= *(matrix[mid].end()-1)) { if (find(matrix[mid].begin(), matrix[mid].end(), target) != matrix[mid].end()) return true; else return false; } else if (target < *(matrix[mid].begin())) { end = mid - 1; } else if (target > *(matrix[mid].end()-1)) { beg = mid + 1; } } return false; } };
相关文章推荐
- 全民主公 v1.0.55 安卓版
- c#ref与out
- HDU 1829 A Bug's Life (并查集)
- 4.6 两条曲线填充的面积图
- poj 2653 Pick-up sticks(几何线段相交判断)
- Python 之 Python与MATLAB 矩阵操作小结
- 简单粗暴的对android so文件加壳,防止静态分析
- 中美会计准则差异比较(PRC GAAP VS US GAAP)
- 男闺蜜下载 v1.6.2 安卓版
- Slave_IO_Running: Connecting解决办法
- HDU 1181.变形课【DFS(BFS也可以的)】【问题的转化】【8月5】
- 开启新篇章——软工视频总结
- 深入讲解Android Property机制
- Source Insight基本使用和快捷键
- 一步一步的无障碍理解快速傅立叶变换
- iOS开发之----根据文本内容和字体大小计算UILabel的size
- org.springframework.orm.jpa.JpaTransactionManager
- ORACLE 死锁日志查询
- 局部变量和全局变量
- http详解