劍指offer 二維陣列中的查詢

2021-07-06 05:55:08 字數 1091 閱讀 4689

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

解題思路:

右上角的數字總是當前行最大且當前列最小的數字。所以我們從右上角開始找,如果目標數字比當前數字大,也就是說比當前數字所在行的所有數字都大,那麼行向下移動一行,如果目標數字比當前數字小,也就是說比當前數字所在列的所有數字都小,那麼列向左移動一列。這樣每次查詢都能縮小一行或者一列的範圍。

例如查詢:6

一. 右上角數字是5

1 | 3 | 4 |5

2 | 4 | 6 | 7

3 | 5 | 7 | 9

5 | 7 | 8 | 10

二. 6>5 排除5所在的行,也就是向下移動一行。此時右上角數字為7

1 | 3 | 4 | 5

2 | 4 | 6 |7

3 | 5 | 7 | 9

5 | 7 | 8 | 10

三. 6 < 7 排除7所在的列,也就是向左移動一列。。此時右上角數字為6

1 | 3 | 4 | 5

2 | 4 |6| 7

3 | 5 | 7 | 9

5 | 7 | 8 | 10

四. 6 == 6 找到~(≧▽≦)/~啦啦啦。

1 | 3 | 4 | 5

2 | 4 |6| 7

3 | 5 | 7 | 9

5 | 7 | 8 | 10

c++實現**如下:

bool find(vector

>

array,int target)

else

if(icurnum > 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 思路有三種,...