1. 程式人生 > >(java)二維有序陣列中查詢元素

(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;
    }
}