1、在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。 請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。 2、解題思路 首先選取數組中右上角的數字。如果該數字等於要查找的數字,查找過程結束;如果該數字大於要查找的數字,剔除這個數字所 ...
1、在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。
請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。
2、解題思路
首先選取數組中右上角的數字。如果該數字等於要查找的數字,查找過程結束;如果該數字大於要查找的數字,剔除這個數字所在的列;
如果該數字小於要查找的數字,剔除這個數字所在的行。也就是說如果要查找的數字不在數組的右上角,則每一次都在數組的查找範圍中剔除一行或者一列,
這樣每一步都可以縮小查找的範圍,直到找到要查找的數字,或者查找範圍為空。
3、解決代碼
public static boolean find(int[][] array,int rows,int colums,int target){ if (array==null){ return false; } //定義啟始行數 //用於從左往右 int row=0; //用於從右往左 int colum=array.length-1; while (row<rows&&colum>=0){ if (array[row][colum]==target){ return true; } if (array[row][colum]>target){ colum--; }else{ row++; } } return false; }
參考文章:https://www.cnblogs.com/edisonchou/p/4737944.html
github地址:https://github.com/Yahuiya/PersonalNotes