在乙個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。
時間限制:c/c++ 1秒,其他語言2秒 空間限制:c/c++ 32m,其他語言64m 熱度指數:1644616
1、分析
本題屬於數值的查詢問題。對於查詢問題,已經有多種常用的查詢方法,比如針對有序的陣列,採用二分查詢,二分查詢之所以快,源於其充分利用了陣列的有序性,每次查詢後把查詢範圍縮小到數值規模的一半。本題目中給定的資料也有一定的規律。每一行從左到右遞增,每一列從上到下遞增,所以每一行與每一列組成的「7」字形的陣列也是有序的。根據這個規律,可以每次考慮乙個「7」字形(第一次選取第一行和最後一列組成的7字形)的行列組合,以行列交叉點的數值作為參考值reference,用目標值target與reference進行比較。如果target小於reference,則target不可能出現在「7」字形的列;如果target大於reference,則target不可能出現在「7」字形的行,由此可知,每次比較,把陣列的查詢範圍縮小一行或者一列,所以時間複雜度是o(max(m,n)),其中m和n分別代表行數和列數。
2、**
public class solution else if(array[i][j] > target)else if(array[i][j] < target)
}return result;
}}
ps:
(1)當找到array[i][j] ==target時,需要break終止;
(2)陣列大小用length屬性,不是size()和length()方法
劍指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 思路有三種,...