在乙個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。
1、針對每一行進行二分查詢
public
boolean
find
(int target,
int[
] array)
int row =array.length;
int col = array[0]
.length;
// 邊界判斷
if(target[0
]||target>array[row-1]
[col-1]
)for
(int i=
0;ireturn
false;}
/** * 二分查詢的實現套路
* --整體思路:不斷縮小查詢範圍,查詢範圍對半砍。
* --while迴圈:因為不知道什麼時候能找到,所以用while迴圈
* --while迴圈的邊界條件
* --<:等s==e時,跳出迴圈,需要在迴圈外再比較一次
* --<=:當s==e時,在迴圈內判斷。
* --所以《或者<=都行。
* --s,e的更新
* --以target為中心
* --target在前部,更新e
* --target在後部,更新s
*/public
boolean
erfen
(int
array,
int target)
if(array[mid]
else
}return
false
;}
2、從左下角(或右上角)開始,向上變小,向右變大public
static
booleanf1(
int[
] array,
int target)
int row =array.length;
int col = array[0]
.length;
if(target[0
]||target>array[row-1]
[col-1]
)int i=row-
1,j=0;
while
(i>=
0&&j<=col-1)
if(array[i]
[j]else
}return
false
;}
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 二維陣列
題目 在乙個二維陣列中每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。完成乙個函式,輸入這樣的陣列和乙個整數,判斷陣列中是否含有該整數。思路 由於該二維陣列從左到右,從上到下均為順序遞增的。因此右下角與左上角的數字均大於或小於其周圍數字,如果選擇改組作為起始點,則無法確定下一...