劍指offer 面試題3 二維陣列的查詢

2021-08-11 15:41:23 字數 597 閱讀 7160

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

**:

class solution 

else if(array[row][col] > target)

col--;

else

row++;

}return isfound;

}};

分析:剛拿到這一題,感覺挺簡單,就是乙個查詢唄。但是,思考了一會,就發現很麻煩。對於查詢,首先要尋找乙個起點,比如從左上角開始查詢。一旦這個數字小於 target ,此時可以往右往下進行查詢。但是此時由於兩個查詢區域有重疊,因此不知道往哪個方向去查詢,就陷入了困境。

因此,尋找乙個查詢的起點很關鍵。我們發現:如果從右上角開始查詢,當右上角這個元素比 target 大,這一列就可以不考慮了,因為這一列其它所有數字都比 target 大,所以有乙個 col--。如果找到一列,該列的第乙個數字比 target 小。就可以從行開始搜尋了。從第一行開始搜尋,如果這一行最後乙個數比 target 小,這一行也可以不用考慮了,因此有乙個 row ++ 

劍指offer面試題3 二維陣列查詢問題

在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。暴力破解方式也就是對二維陣列中的每個元素逐個檢查,結束條件為找到和目標值相等的元素或者查詢到最後乙個元素。對於乙個行列數都為n的二維陣...

劍指offer面試題 二維陣列的查詢

思路 當我們看到這道題的第一反應應該是遍歷這個二維陣列,逐個進行查詢,這樣雖然可以得到結果但是時間複雜度較大,並且沒有用到題目中給我們的線索,我們可以看到該二維數字是按照一定順序排列的。我們可以把這個四行四列的二維陣列看做乙個4 4的方格,先找出右上角的數字,如果右上角的數字是我們要找的數字就結束,...

劍指offer 面試題04 二維陣列查詢

二維陣列查詢 在乙個 n m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。示例 現有矩陣 matrix 如下 1,4,7,11,15 2,5,8,12,19 3,6,9,16,22 ...