原題**:
38. 搜尋二維矩陣 ii
討論區
寫出乙個高效的演算法來搜尋m×n矩陣中的值,返回這個值出現的次數。
這個矩陣具有以下特性:
您在真實的面試中是否遇到過這個題?
yes樣例考慮下列矩陣:
[
[1, 3, 5, 7],
[2, 4, 7, 8],
[3, 5, 9, 10]
]
給出target =3,返回2
挑戰
要求o(m+n) 時間複雜度和o(1) 額外空間
標籤
亞馬遜矩陣
sorted matrix
谷歌非挑戰版思路:
腦子驢了,看到排序陣列(矩陣)的搜尋問題第一時間想到的就是二分查詢法……對每行進行二分查詢統計個數,時間複雜度o(m×log(n))。
ac**:
classsolution
int result=0
;
int rowsize=matrix.size();
int colsize=matrix[0
].size();
if (target0][0]||target>matrix[rowsize-1][colsize-1
])
for (int i=0;i)
else
if (targetelse}}
return
result;
}};
挑戰版 參考:
可以多看幾遍
利用給定矩陣的特點,可以從右上角走到左下角,也可以從左下角走到右上角。這樣每次移動時要麼剔除當前行要麼剔除當前列。
第一種,若當前點大於target,當前列-1,即判斷matrix【row】【col-1】;
若當前點小於target,當前行+1,即判斷matrix【row+1】【col】;
若當前點等於target,計數器加1,然後當前行+1,當前列-1;
重複以上步驟直到左下角。
ac**:
classsolution
int result=0
;
int rowsize=matrix.size();
int colsize=matrix[0
].size();
if (target0][0]||target>matrix[rowsize-1][colsize-1
])
int i=0,j=colsize-1
;
while(i>=0&&i=0&&jelse
if (matrix[i][j]else
}return
result;
}};
lintcode 38 搜尋二維矩陣 II
寫出乙個高效的演算法來搜尋m n矩陣中的值,返回這個值出現的次數。這個矩陣具有以下特性 每行中的整數從左到右是排序的。每一列的整數從上到下是排序的。在每一行或每一列中沒有重複的整數。樣例例1 輸入 3 4 target 3輸出 1例2 輸入 1,3,5,7 2,4,7,8 3,5,9,10 targ...
搜尋二維矩陣
寫出乙個高效的演算法來搜尋 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。然後...