劍指offer之二維數組中的查找

在這裏插入圖片描述

/**
	 * 問題:
	 * 		在一個二維數組中(每個一維數組的長度相同)
	 * 		每一行都按照從左到右遞增的順序排序
	 * 		每一列都按照從上到下遞增的順序排序。
	 * 		請完成一個函數
	 * 		輸入這樣的一個二維數組和一個整數
	 * 		判斷數組中是否含有該整數。
	 * 思路:沒比較一次剔除一行或一列
	 * 		從右上角或者左下角開始
	 * 		等於則返回
	 * 		當前位置大於目標數則剔除所在列
	 * 		反之剔除所在行
	 * @param array
	 * @param num
	 */
	public boolean find(int[][] array,int num){
		if(array == null)return false;
		boolean found = false;
		int row = array.length/array[0].length;
		int column = array[0].length;
		for(int i = 0,j = column-1;i<row && j>=0;){
			if(array[i][j] == num){
				found = true;
				break;
			}
			else if(array[i][j] > num){
				j--;
			}
			else if(array[i][j] < num){
				i++;
			}
		}
		return found;
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章