題目04:
在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數, 判斷數組中是否含有該整數。
package offer04;
/**
* 在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數
* 判斷數組中是否含有該整數
* @author liq
*
*/
public class Find {
public static void main(String[] args) {
int[][] matrix = new int[][] {{1,2,8,9}, {2,4,9,12}, {4, 7, 10, 13}, {6, 8, 11, 15}};
System.out.println(ifContains(matrix, 7));
}
public static boolean ifContains(int[][] matrix, int target){
boolean result = false;
if(matrix != null && matrix.length > 0 && matrix[0].length > 0) {
//選起始點爲右上角
int row = 0;
int colums = matrix.length - 1;
while(row < matrix.length && colums > 0) {
//相等 返回
if(matrix[row][colums] == target) {
break;
}else if(matrix[row][colums] > target){
//大於target 列數減一
colums -- ;
}else {
//小於target 行數加一
row ++;
}
}
}
return result;
}
}