劍指offer04

題目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;
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章