劍指offer(java代碼)——二維數組中的查找

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

常規思路肯定就是按照順序遍歷二維數組,但是這樣時間複雜度太高。這個問題其實如果大學裏學過運籌學的話解決起來特別簡單。我們看這個二維數組有什麼特點。這個數組每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。這也就意味着每行最後一個數是該行最大的,而沒列第一個數是每列最小的。

這也就說明,第一行的最後一個數字,是該行最大而該列最小的。如果要找的數比這個數小,那麼這一列中不會出現這個數,而如果要找的數比這個數大,那麼這一行中不會存在這個數。


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