二分查詢第一題 衝…先看題目:編寫乙個高效的演算法來判斷 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 思路 行和列都是有序的,如果以右上角為起點來判斷大小...