[剑指offer]面试题第[1]题[JAVA][二维数组中的查找][数组][二分]
生活随笔
收集整理的這篇文章主要介紹了
[剑指offer]面试题第[1]题[JAVA][二维数组中的查找][数组][二分]
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
【問題描述】
在一個二維數(shù)組中(每個一維數(shù)組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數(shù),輸入這樣的一個二維數(shù)組和一個整數(shù),判斷數(shù)組中是否含有該整數(shù)。
【坑】
1. 不能以某一行最后一個或者第二行第一個比較大小,進(jìn)行篩選
2. 從左上開始移動,容易越界 不能保證兩個方向一增一減
1 5 9
10 15 16
【解答思路】
1. 遍歷
每一行看成有序遞增的數(shù)組,利用二分查找,通過遍歷每一行得到答案
時間復(fù)雜度是nlogn
2.遞增
-
選取右上角或者左下角的元素a[row][col]與target進(jìn)行比較
-
當(dāng)target小于元素a[row][col]時,那么target必定在元素a所在行的左邊,即col–;
-
當(dāng)target大于元素a[row][col]時,那么target必定在元素a所在列的下邊,即row++;
總結(jié)
以上是生活随笔為你收集整理的[剑指offer]面试题第[1]题[JAVA][二维数组中的查找][数组][二分]的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【机器学习-公开数据集免费下载】
- 下一篇: jQuery基础:remove()与 d