leetcode 74 搜尋二維矩陣

2022-08-24 18:09:11 字數 1257 閱讀 1432

編寫乙個高效的演算法來判斷 m x n 矩陣中,是否存在乙個目標值。該矩陣具有如下特性:

示例 1:

輸入:

matrix = [

[1, 3, 5, 7],

[10, 11, 16, 20],

[23, 30, 34, 50]

]target = 3

輸出: true

示例 2:

輸入:

matrix = [

[1, 3, 5, 7],

[10, 11, 16, 20],

[23, 30, 34, 50]

]target = 13

輸出: false

bool searchmatrix(vector>& matrix, int target) 

1、這道題給定乙個m行n列的矩陣,要求編寫乙個高效的演算法來判斷矩陣中是否含有target這個元素。

如果存在,返回true,否則返回false。

2、這道題其實就是二分法在矩陣上的應用,整個矩陣是公升序的。

我們先用二分法確定target可能會在哪一行,接著再用二分法確定target在哪一列,或者不存在。

**如下:(附詳解)

bool searchmatrix(vector>& matrix, int target) 

{if(matrix.size()==0||matrix[0].size()==0)return false;//或者的邊界條件

int hang=matrix.size(),lie=matrix[0].size(),left=0,right=hang-1,med,t;

while(left<=right)//二分法判斷target在哪一行

{med=(left+right)/2;

if(targetmatrix[med][lie-1])

left=med+1;

else//找到元素在med這一行了

{t=med;

left=0;

right=lie-1;

while(left<=right)//用二分法找到target在哪一列

{med=(left+right)/2;

if(matrix[t][med]==target)//找到了返回true

return true;

else if(target

上述**實測8ms,beats 97.83% of cpp submissions。

LeetCode74 搜尋二維矩陣

題目大意 要求在乙個二維矩陣中搜尋乙個數,要求是時間盡可能少。說明 二維矩陣是從左到右,從上到下依次增大的。題目分析 本題如果用挨個遍歷的話,顯然沒有利用上矩陣中的有序關係。我的做法是 將target的值與每行的最後乙個數進行比較,若最後乙個數小於target,那麼還要往下搜尋,將搜尋的行邊界的上界...

leetcode 74 搜尋二維矩陣

編寫乙個高效的演算法來判斷 m x n 矩陣中,是否存在乙個目標值。該矩陣具有如下特性 示例 1 輸入 matrix 1,3,5,7 10,11,16,20 23,30,34,50 target 3輸出 true示例 2 輸入 matrix 1,3,5,7 10,11,16,20 23,30,34,...

Leetcode 74 搜尋二維矩陣

編寫乙個高效的演算法來判斷 m x n 矩陣中,是否存在乙個目標值。該矩陣具有如下特性 示例 1 輸入 matrix 1,3,5,7 10,11,16,20 23,30,34,50 target 3輸出 true示例 2 輸入 matrix 1,3,5,7 10,11,16,20 23,30,34,...