題目描述:
在乙個 n * m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。示例:
現有矩陣 matrix 如下:
[ [1, 4, 7, 11, 15],
[2, 5, 8, 12, 19],
[3, 6, 9, 16, 22],
[10, 13, 14, 17, 24],
[18, 21, 23, 26, 30]
]給定 target = 5,返回 true;給定 target = 20,返回 false。
分析思路:
此處重點在於二維矩陣中資料排列的規律,即從左至右遞增,從上至下遞增。因而從矩陣的右上角開始查詢效果最佳,每次比較時如果於目標值不匹配可以排除掉一行或一列的範圍。
**:
class
solution
//行數
int m = matrix.length;
//列數
int n = matrix[0]
.length;
int i =0;
int j = n-1;
while
(i < m && j >=0)
else
if(target > matrix[i]
[j])
else
}return
false;}
}
劍指4 二維陣列的查詢
題目 在乙個 n m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。1.判斷是否為空,除了mat.size 以外,不要忘了本身為乙個vector mat.empty mat 0 emp...
劍指offer4 二維陣列中查詢
在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列也都是按照從上到下遞增的順序排序。完成乙個函式,輸入乙個二維陣列和乙個整數,判斷該陣列中是否含有該整數。最開始的想法肯定就是暴力搜尋了,雙重for迴圈,但是這樣就和題目中給定的遞增的條件沒什麼關係了,顯然不是題目的本意。於是,採取另一種辦法...
劍指offer 4 二維陣列中查詢
乙個n m的二維陣列中,每一行都按照從左往右遞增的順序排序 每一列都按照從上到下遞增的順序排序。實現乙個函式 輸入乙個這樣的陣列和乙個整數,判斷這個陣列中有沒有這個整數 思路 方法一 暴力遍歷矩陣 matrix o n m 方法二 矩陣逆時針旋轉40 矩陣,得到二叉搜尋樹 根節點對應的是 7 3 這...