在乙個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。
對陣列中的每個元素依次遍歷進行比較。時間複雜度:o(n*n);
沒有使用到:陣列有序這個條件
/**
** @param target 待查詢的目標
* @param array 二維陣列
* @return
* 思路:遍歷整個二維陣列,窮舉所有的目標進行比較
* 210ms 16784k
*/public
boolean
find1
(int target,
int[
] array)}}
return
false
;}
因為每一行的資料為有序的,就是乙個一維的有序陣列,則可以對這行進行二分查詢,時間複雜度為o(log2n)則對n行依次使用二分查詢,則時間複雜度為:o(nlogn)
矩陣是有序的,從左下角來看,向上數字遞減,向右數字遞增,
因此從左下角開始查詢,當要查詢數字比左下角數字大時。右移;
當 要查詢數字比左下角數字小時,上移
從左下角下右上角依次比較
//212ms
public
static
boolean
find3
(int target,
int[
] array)
else
if(array[i]
[j]< target)
else
}return
false
;}
暴力演算法: o(n*n) 210ms行內二分查詢: o(nlogn)193ms
右下-左上: 212ms
1 劍指offer 二維陣列查詢
在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。兩種思路 一種是 把每一行看成有序遞增的陣列,利用二分查詢,通過遍歷每一行得到答案,時間複雜度是nlogn p...
劍指offer 二維陣列查詢 1
在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。示例 輸入 7,1,2,8,9 2,4,9,12 4,7,10,13 6,8,11,15 返回值 truec ...
劍指offer 二維陣列
題目 在乙個二維陣列中每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。完成乙個函式,輸入這樣的陣列和乙個整數,判斷陣列中是否含有該整數。思路 由於該二維陣列從左到右,從上到下均為順序遞增的。因此右下角與左上角的數字均大於或小於其周圍數字,如果選擇改組作為起始點,則無法確定下一...