搜尋二維矩陣

2021-10-18 07:35:09 字數 881 閱讀 7796

二分查詢第一題 衝…

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

輸入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3

輸出:true

我的解法:

public

boolean

searchmatrix

(int

matrix,

int target)

else

if(matrix[left]

[right]

> target)

else

}return

false

;}

二維陣列的二分查詢對我來說有點繞,還是我的解法比較易懂吧·

但二分查詢是必備技能,難也得學是吧!

看看題解的二分查詢吧

選取虛陣列最中間的序號作為中間序號: pivot_idx =

(left + right)/2。

該序號對應於原矩陣中的 row = pivot_idx / n 行 col = pivot_idx % n 列, 由此可以拿到中間元素pivot_element。該元素將虛陣列分為兩部分。

比較 pivot_element 與 target 以確定在哪一部分進行進一步查詢。

public

boolean

searchmatrix

(int

matrix,

int target)

}return

false

;}

搜尋二維矩陣

寫出乙個高效的演算法來搜尋 m n矩陣中的值。這個矩陣具有以下特性 每行中的整數從左到右是排序的。每行的第乙個數大於上一行的最後乙個整數。樣例 考慮下列矩陣 1,3,5,7 10,11,16,20 23,30,34,50 給出 target 3,返回 true 思路一 最容易想到的一種解法就是兩層f...

搜尋二維矩陣

寫出乙個高效的演算法來搜尋 m n矩陣中的值。這個矩陣具有以下特性 樣例 考慮下列矩陣 1,3,5,7 10,11,16,20 23,30,34,50 給出target 3,返回true 解題思路 可以把這個矩陣,看成是乙個大的一維陣列,1,3,5,7,10,11,16,20,23,34,50。然後...

搜尋二維矩陣 II

搜尋二維矩陣 ii 寫出乙個高效的演算法來搜尋m n矩陣中的值,返回這個值出現的次數。這個矩陣具有以下特性 您在真實的面試中是否遇到過這個題?yes 樣例考慮下列矩陣 1,3,5,7 2,4,7,8 3,5,9,10 給出target 3 返回2 思路 行和列都是有序的,如果以右上角為起點來判斷大小...