(java)二維有序數組中查找元素

題目大意:

          在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。

解題思路:

          (1)一看到有序數組就想到了二分法查找,而在這個二維數組中,無法先按行或者先按列查找

          (2)看了一下,不能從左上角和右下角開始查找和比較元素(不知道向下還是向右)

           (3)不能從中間對角線開始比較(二異性)

正確的是:從左下角或者右上角開始比較。(例如右上角)因爲這樣元素大就可以向下移動元素小就可以向左移動

代碼如下:

public class Solution {
    public boolean Find(int [][] array,int target) {
	int row=0,col=array[0].length-1;
		while(row<array.length && col>=0){
			if(array[row][col]==target){
				return true;
			}else if(array[row][col]<target){
				row++;
			}else{
				col--;
			}
		}
		return false;
    }
}


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