题目描述
二维数组没一行从左到右递增,从上到下递增。编写函数判断数组是否含有该正数
选取开始点:右上角
同leetcode
leetcode
- 搜索二维矩阵
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:
每行中的整数从左到右按升序排列。
每行的第一个整数大于前一行的最后一个整数。
bool searchMatrix(vector<vector<int>>& matrix, int target) {
if(matrix.size() == 0) return false;
if(matrix[0].size() == 0) return false;
for(int j=matrix[0].size()-1; j>=0; j--)
{
for(int i=0; i<matrix.size();i++)
{
if(target == matrix[i][j]) return true;
else if(target < matrix[i][j]) break;
}
}
return false;
}
执行用时 : 8 ms, 在Search a 2D Matrix的C++提交中击败了99.84% 的用户
内存消耗 : 9.8 MB, 在Search a 2D Matrix的C++提交中击败了81.10% 的用户
while I, j直接上手
bool searchMatrix(vector<vector<int>>& matrix, int target) {
if(matrix.size() == 0) return false;
if(matrix[0].size() == 0) return false;
/**
for(int j=matrix[0].size()-1; j>=0; j--)
{
for(int i=0; i<matrix.size();i++)
{
if(target == matrix[i][j]) return true;
else if(target < matrix[i][j]) break;
}
}**/
int i=0, j =matrix[0].size()-1;
while(i<matrix.size() && j>=0)
{
if(target == matrix[i][j]) return true;
else if(target < matrix[i][j])
{
j--;
}
else
{
i++;
}
}
return false;
}
执行用时 : 76 ms, 在Search a 2D Matrix II的C++提交中击败了97.17% 的用户
内存消耗 : 12.9 MB, 在Search a 2D Matrix II的C++提交中击败了42.78% 的用户