劍指offer 二維陣列中的查詢

2021-07-10 08:56:35 字數 659 閱讀 9920

題目描述:

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

思路:我們都能想到o(n2)的演算法。

但是有乙個更好的o(n+m)的演算法。根據題目給出的陣列的性質我們可以推出一些規律,即:如果當前數字cur大於題目所給數字t,則cur所在行右邊的元素以及下邊元素都大於t,如果小於t,則cur所在行的左邊的元素以及上邊的元素都小於t,因此如果我們將開始的元素放在右上方,則如果t大於其,則直接向下走一行,如果小於其,則直接向左走一列。同理左下角也可以。

#include 

#include

using

namespace

std;

const

int maxn = 1000 + 10;

int num[maxn][maxn];

int n, m;

int x;

bool find_()

else

if(num[p1][p2] < x)

else

}return

false;

}int main()

return

0;}

劍指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 思路有三種,...