题目:
编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:
每行的元素从左到右升序排列;
每列的元素从上到下升序排列。
C++:
思路:
从二维数组的右上角开始查找。如果当前元素等于目标值,则返回 true。如果当前元素大于目标值,则移到左边一列。如果当前元素小于目标值,则移到下边一行。
#include<iostream>
#include<vector>
using namespace std;
class Solution
{
public:
bool searchMatrix(vector<vector<int>>& matrix,int target)
{
// 判断数组不为空
if(matrix.size()==0 || matrix[0].size()==0) return false;
int H=0; int L = matrix[0].size() - 1;
while(H<matrix.size() && L>=0)
{
if(matrix[H][L]==target) return true;
else if(matrix[H][L]>target)
{
L--;
}
else if(matrix[H][L]<target)
{
H++;
}
}
return false;
}
}
python:
class Solution:
def searchMatrix(self,matrix,target):
if len(matrix)==0 or len(matrix[0]==0):
return False
H = 0
L = len(matrix[0]) - 1
while H < len(matrix) and L>=0:
if matrix[H][L] ==target:
return True
elif matrix[H][L] > target:
L -= 1
elif matrix[H][L] < target:
H += 1
return False