Lintcode_28 Search a 2D Matrix
来源:互联网 发布:java 退出程序 编辑:程序博客网 时间:2024/06/10 16:02
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.
Example
Consider the following matrix:
[ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50]]
Given target = 3
, return true
.
Challenge
思路是做个函数的映射,用二分法解决:O(log(n) + log(m)) time
class Solution {public: /** * @param matrix, a list of lists of integers * @param target, an integer * @return a boolean, indicate whether matrix contains target */ bool searchMatrix(vector<vector<int> > &matrix, int target) { // write your code here if (matrix.size() == 0) return false; int head=0; int tail=matrix.size()*matrix[0].size()-1; while (tail - head > 1) { int mid = (tail + head)/2; // cout<<mid<<" "<<reflect(mid,matrix)<<endl; if (reflect(mid,matrix) > target) { tail = mid; continue; } if (reflect(mid,matrix) < target) { head = mid; continue; } if (reflect(mid,matrix) == target) { return true; } } if (reflect(head,matrix) == target || reflect(tail,matrix)==target || reflect((head+tail)/2,matrix)==target) return true; else return false; } int reflect(int ind, vector<vector<int> > &matrix) { int i=ind/matrix[0].size(); int j=ind%matrix[0].size(); return matrix[i][j]; }};
0 0
- Lintcode_28 Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D matrix
- [拆边费用流] BZOJ 1449 [JSOI2009]球队收益
- 矢量字体字形分布图
- 1012. The Best Rank (25)
- activeMQ消息中文乱码解决
- poj2891(中国剩余定理模版::不要求模数互质)
- Lintcode_28 Search a 2D Matrix
- Android studio 创建aidl文件夹
- iOS面试之runtime
- 初识hadoop框架及hadoop1.x 与hadoop2.x的区别
- java synchronized详解
- Lintcode_29 Interleaving String
- GetKeyState和GetAsyncKeyState以及GetKeyboardState函数的用法与区别
- GetKeyState和GetAsyncKeyState以及GetKeyboardState函数的用法与区别2-------C#检查键盘大小写锁定状态
- UVA 10118 - Free Candies(记忆化搜索)