劍指offer 3 二維陣列中的查詢

2021-07-02 07:03:43 字數 590 閱讀 5737

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

解題思路:從二維陣列的右上角的元素開始判斷,因為此元素是它所在行的最大數,是它所在的列的最小數。如果它等於要查詢的數字,則查詢過程結束。如果它大於要查詢的數字,則可以排除它所在的列。如果它小於要查詢的數字,則可排除它所在的行。這樣如果要查詢的數字不在陣列的右上角,則每次判斷都可以排除一行或一列以縮小查詢範圍,直到找到要查詢的數字,或者查詢範圍為空。

#include using namespace std;

bool find(int *matrix, int cols, int rows, int number) //強制轉化為一維陣列

else if ( matrix[row*cols+col] > number )

col--;

else

row++;;}}

return found;

} void test1() // 要查詢的數在陣列中

, , , };

cout<<"test1 : "<

劍指Offer 3 二維陣列中的查詢

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

劍指offer3 二維陣列中的查詢

題目 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。package com.cxy.test public class tset03 int rows matrix.length ...

劍指offer 3 二維陣列中的查詢

在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。查詢整數時,如果從左上角開始查詢,情況較為複雜,可以轉換思路,從右上角開始查詢 左邊數字比較小,右邊數字比較大,容易進行判斷。測試用例...