劍指offer 二維陣列中的查詢 1

2021-10-03 19:30:57 字數 834 閱讀 4499

在乙個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。

時間限制: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 思路有三種,...