題目:在乙個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。
方法一:暴力法
思路:遍歷二維陣列,若有相等的值則返回true,遍歷結束沒有相等的值則返回false。
時間複雜度:o(n2)
空間複雜度:o(1)
public class solution
for(int i = 0; i < array.length; i++) }}
return false;
}}
方法二:從左下找(從右上找)
思路:從左下開始找,座標上側都小於當前值,座標右側都大於當前值。若當前值大於目標值則向上走,若當前值小於目標值則向右走。找到則返回true,超出陣列邊界則返回false。
時間複雜度:o(n)
空間複雜度:o(1)
public class solution
int row = array.length-1;//目標行維度
int col = 0;//目標列維度
int rows = 0;//行維度上邊界
int cols = array[0].length-1;//列維度右邊界
while(row >= rows && col <= cols) else if(value > target) else
}return false;
}}
方法三:二分查詢
思路:對於陣列的每一行進行二分查詢,是暴力法的一種優化。
時間複雜度:o(nlogn)
空間複雜度:o(1)
public class solution
for(int i = 0; i < array.length; i++)
if(target > array[i][array[0].length-1])
int left = 0;
int right = array[0].length-1;
while(left <= right) else if(array[i][mid] > target) else }}
return false;
}}
劍指offer 二維陣列中查詢
在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和一 個整數,判斷陣列中是否含有該整數。public class solution 因為陣列每一行都按照從左到右遞增的順序排序,每一列都按照從上到下...
劍指offer 二維陣列中查詢
從今天開始每天一題,除了節假日。在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。class solution return false class solut...
劍指offer 二維陣列中查詢
要求如下 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數 示例如下 7,1,2,8,9 2,4,9,12 4,7,10,13 6,8,11,15 思路有三種,...