74. Search a 2D Matrix
来源:互联网 发布:行知学校 编辑:程序博客网 时间:2024/05/16 01:39
/*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.*/#include <stdio.h>#include <iostream>#include <vector>using namespace std;class Solution {public: bool searchMatrix(vector<vector<int>>& matrix, int target) { if(matrix.empty()) return false;int row=matrix.size(),column=matrix[0].size();if(matrix[0][0]>target || matrix[row-1][column-1]<target) return false;//寻找位于第几行int left=0,right=row-1;int mid,target_row;while(left<=right){mid=(left+right)/2;if(matrix[mid][0]==target)return true;else if(matrix[mid][0]<target)left=mid+1;elseright=mid-1;}target_row=left-1;left=0,right=column-1;while(left<=right){mid=(left+right)/2;if(matrix[target_row][mid]==target)return true;else if(matrix[target_row][mid]<target)left=mid+1;elseright=mid-1;}return false;//Runtime Error Message: reference binding to null pointer of type 'value_type' ?????//不知道什么原因?? }bool searchMatrix2(vector<vector<int>>& matrix, int target) {//把二维矩阵看成一维数组利用二分查找 val[m*column+n]=matrix[m][n]if(matrix.empty())return false;int row=matrix.size(),column=matrix[0].size();int left=0,right=row*column-1,mid;while(left<=right){mid=(left+right)/2;if(matrix[mid/column][mid%column]==target)return true;else if(matrix[mid/column][mid%column]>target)right=mid-1;elseleft=mid+1;}return false;}};int main(){Solution mys;vector<vector<int> > matrix;//={{1,2,3},{4,5,6},{7,8,9}};cout<<mys.searchMatrix(matrix,5)<<endl;return 0;}
阅读全文
0 0
- LeetCode 74. Search a 2D Matrix
- [LeetCode]74.Search a 2D Matrix
- LeetCode --- 74. Search a 2D Matrix
- [Leetcode] 74. Search a 2D Matrix
- [leetcode] 74.Search a 2D Matrix
- 74. Search a 2D Matrix
- 74. Search a 2D Matrix
- Leetcode 74. Search a 2D Matrix
- [LeetCode]74. Search a 2D Matrix
- 74. Search a 2D Matrix LeetCode
- 74. Search a 2D Matrix
- 74. Search a 2D Matrix
- 74. Search a 2D Matrix
- [LeetCode]74. Search a 2D Matrix
- [LeetCode]74. Search a 2D Matrix
- 74. Search a 2D Matrix
- 74. Search a 2D Matrix
- leetcode 74. Search a 2D Matrix
- 国际电子邮件协会判定垃圾邮件规则
- python测试函数
- 例3-2 用振幅为0.8的方波进行傅里叶分析,并用傅里叶分析得到的系数求解当K为不同值时的合成图。
- 389. Find the Difference
- 网络流建模(一)
- 74. Search a 2D Matrix
- 学习图片格式
- Bochs上运行BIOS启动代码
- Python3爬虫下载pdf(二)
- 安卓四大组件(二)
- 网络中进程间的通信----Socket
- php之socket入门教程
- 让C#轻松实现读写锁分离--封装ReaderWriterLockSlim
- [Tyvj1655] 游乐园 二分查找