[LeetCode]Search a 2D Matrix
2015-11-02 23:34
453 查看
题目描述:(链接)
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 =
解题思路:
二分查找
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.
解题思路:
二分查找
class Solution { public: bool searchMatrix(vector<vector<int>>& matrix, int target) { int first = 0; int last = matrix.size() - 1; int len = matrix[0].size(); while (first <= last) { int mid = first + (last - first) / 2; if (matrix[mid][0] <= target && target <= matrix[mid][len - 1] ) { return binarySearch(matrix[mid], target); } else if (matrix[mid][0] > target) { last = mid - 1; } else if (matrix[mid][len - 1] < target) { first = mid + 1; } } return false; } private: bool binarySearch(vector<int>& vec, int target) { int first = 0; int last = vec.size() - 1; while (first <= last) { int mid= first + (last -first) / 2; if (vec[mid] == target) { return true; } else if (vec[mid] < target) { first = mid + 1; } else { last = mid - 1; } } return false; } };
相关文章推荐
- Python爬虫 -- 登陆新浪微博
- IOS中获取各种文件的目录路径
- 工作流程引擎
- Xcode常用快捷键
- 配置jetty maven插件
- 用fragment碎片动态创建UI
- spring mvc分页-----转载
- 系统管理员必学的30个命令(加批注)
- Java 多线程中run() 与 start() 的不同
- 股市谚语
- Extjs/jquery/javascript类的选择
- swift 快速奔跑的兔几 本节的内容是:UIDynamic:UI和重力
- Java记录 -55- Set下的HashSet
- JDBC基础学习笔记_03_jdbc增数据并防止sql注入
- java动手动脑
- fastJson在java后台转换json格式数据探究
- (模板)多项式乘法对任意数取模
- Java并发编程:Lock
- KMP模板
- maven镜像