題目:在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。
解題思路:從二維陣列的右上角的元素開始判斷,因為此元素是它所在行的最大數,是它所在的列的最小數。如果它等於要查詢的數字,則查詢過程結束。如果它大於要查詢的數字,則可以排除它所在的列。如果它小於要查詢的數字,則可排除它所在的行。這樣如果要查詢的數字不在陣列的右上角,則每次判斷都可以排除一行或一列以縮小查詢範圍,直到找到要查詢的數字,或者查詢範圍為空。
#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 二維陣列中的查詢
在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。查詢整數時,如果從左上角開始查詢,情況較為複雜,可以轉換思路,從右上角開始查詢 左邊數字比較小,右邊數字比較大,容易進行判斷。測試用例...