二維陣列中的查詢

2022-09-20 15:00:11 字數 966 閱讀 7126

題目描述:

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

輸入描述:

array: 待查詢的二維陣列

target: 查詢的數字

輸出描述:

查詢到返回true,查詢不到返回false

遍歷查詢顯然不是我們期望的結果。題意描述的二維陣列的排列規則,應該引起我們的注意。

當二維陣列中的某個元素與target比較時,只存在三種情況,相等,大於,小於。

相等直接返回true即可;當當前元素的值大於或者小於target的值,我們需要明確定位下乙個同target比較的元素的位置。

二維陣列的四個角上的元素是我們的突破口。

似乎我們總是忍不住首先考慮陣列的第乙個(左上角)元素。但是,馬上我們就能找到從左上角元素開始查詢不合適的理由。

當第乙個元素和target比較之後,如果不幸二者不相等,接下來的問題就是,我們無法確定下個和target比較的是哪個元素。因為,無論第乙個元素的右邊還是下面的元旦都比第乙個元素大。

右下角的元素存在同樣問題。

依照這種思路,我們不能發現,左下角和右上角的元素存在乙個共同特點:

當target大於當前元素的值時,下乙個需要和target比較的元素必在當前元素的下方;

當target小於當前元素的值是,下乙個需要和target比較的元素必在當前元旦是左方。

那為什麼不從左下角或右上角元素開始呢?

從右上角元素開始

class

solution

return

false

; }

};

從左下角元素開始

class

solution

return

false

; }

};

二維陣列中查詢

1.問題描述 在乙個二維陣列中,每一行按照從左到右的遞增順序排序,每一列按照從上到下的遞增的順序排序,請完成這樣乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列是否含有該整數。來自 劍指offer 2.分析 首先選取陣列中右上角的數字。如果該數字等於要查詢的數字,查詢過程結束 如果該數字大於要查...

二維陣列中查詢

乙個二維陣列,每一行從左到右,每一列從上到下,都是按遞增順序排列,輸入乙個二維陣列和某個數,判斷陣列中是否存在這個數 排除行和列 比如從右上角元素出發。先確定列的範圍,如果查詢數大於當前列的第一行數,那麼這一行的所有數都大於查詢數,排除,繼續查詢左邊列 確定行範圍,在前面列的範圍內,如果最右邊元素小...

二維陣列中查詢

題目描述 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。思路解析 這是一道比較基礎的題,就是找二維陣列中的乙個數。方案一 暴力 function find target,array...