劍指Offer 二維陣列中的查詢

2021-07-27 09:02:14 字數 794 閱讀 7663

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

我一開始的思路是從左到右,從上到下遍歷。

public boolean find1(int target, int array) 

}return

false;

}

這樣的方法時間複雜度為n*n,很費時間。

方法2:因為矩陣是有序的,每一行都是從小到大,可以使用二分法。

public boolean find(int  array,int target) 

}return false;

}

時間複雜度為nlogn,這種方法不難想到。

方法三:

利用二維陣列由上到下,由左到右遞增的規律,

那麼選取右上角或者左下角的元素a[row][col]與target進行比較,

當target小於元素a[row][col]時,那麼target必定在元素a所在行的左邊,

即col–;

當target大於元素a[row][col]時,那麼target必定在元素a所在列的下邊,

即row++;

public boolean find(int  array,int target) 

return

false;

}

這種方法比較巧妙,時間複雜度為2n,如果再結合二分法,可以到n+logn

劍指offer 二維陣列中查詢

在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和一 個整數,判斷陣列中是否含有該整數。public class solution 因為陣列每一行都按照從左到右遞增的順序排序,每一列都按照從上到下...

劍指offer 二維陣列中查詢

從今天開始每天一題,除了節假日。在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。class solution return false class solut...

劍指offer 二維陣列中查詢

要求如下 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數 示例如下 7,1,2,8,9 2,4,9,12 4,7,10,13 6,8,11,15 思路有三種,...