《劍指offer》面試題4 二維陣列中的查詢

2021-10-23 05:35:05 字數 772 閱讀 4007

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

8924

91247

101368

1115

上面就是滿足要求的乙個二維陣列,輸入整數7,返回true;輸入5,返回false。

#include #include using namespace std;

//二維陣列傳參的方式要先定義列數

bool find(int arr[4],int rows,int number)else if(arr[row][col] < number)else

} return isflag;

}int main(),,,};

int row = 3,col = 0;

int number = 5;//這裡是要查詢的整數

if(find(arr,4,number)) cout<<"true";

else cout<<"false";

return 0;

}

二維陣列傳參的時候,要注意要定義列數。演算法是根據每次排查二維陣列的左下角的元素,如果要查的整數小於它,根據矩陣從左向右遞增的規律,它右邊的數隻會更大,要查的數會依舊小於它們,所以果斷排除這一行;如果要查的整數大於它,同理可以排除這一列。按照這樣的規律,把原先的二維陣列不斷縮小排查範圍,最後要麼查到乙個元素等於整數,要麼超過陣列的邊界,達到查詢的目的。

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

題目 二維陣列的查詢 在乙個二位陣列中,每一行都遞增,每一列的遞增,請完成乙個函式,查詢二維陣列中是否有number 方案 只需要每次從二維陣列的右上角開始查詢就可以了,因為如果右上角的數字都大於要查詢的number的話,那麼這一列肯定都大於number,我們只需要在剩下的列中找就行了,如果右上角的...

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

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

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

在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。class solution def find self,array,target 判斷陣列是否為空 if a...