[剑指offer]面试题3:二维数组中的查找
面試題3:二維數(shù)組中的查找
題目:在一個(gè)二維數(shù)組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請(qǐng)完成一個(gè)函數(shù),輸入這樣的一個(gè)二維數(shù)組和一個(gè)整數(shù),判斷數(shù)組中是否含有該整數(shù)。
解題思路:
首先選取數(shù)組中右上角的數(shù)字。如果該數(shù)字等于要查找的數(shù)字,查找過(guò)程結(jié)束;如果該數(shù)字大于要查找的數(shù)字,剔除這個(gè)數(shù)字所在的列;如果該數(shù)字小于要查找的數(shù)字,剔除這個(gè)數(shù)字所在的行。
代碼如下:
從矩陣的右上角開始找:
代碼如下:
從矩陣的左下角開始找:
測(cè)試用例:
● 二維數(shù)組中包含查找的數(shù)字(查找的數(shù)字是數(shù)組中的最大值和最小值,查找的數(shù)字介于數(shù)組中的最大值和最小值之間)。
● 二維數(shù)組中沒有查找的數(shù)字(查找的數(shù)字大于數(shù)組中的最大值,查找的數(shù)字小于數(shù)組中的最小值,查找的數(shù)字在數(shù)組的最大值和最小值之間但數(shù)組中沒有這個(gè)數(shù)字)。
● 特殊輸入測(cè)試(輸入空指針)。
本題考點(diǎn):
● 考查應(yīng)聘者對(duì)二維數(shù)組的理解及編程能力。二維數(shù)組在內(nèi)存中占據(jù)連續(xù)的空間。在內(nèi)存中從上到下存儲(chǔ)各行元素,在同一行中按照從左到右的順序存儲(chǔ)。因此我們可以根據(jù)行號(hào)和列號(hào)計(jì)算出相對(duì)于數(shù)組首地址的偏移量,從而找到對(duì)應(yīng)的元素。
● 考查應(yīng)聘者分析問題的能力。當(dāng)應(yīng)聘者發(fā)現(xiàn)問題比較復(fù)雜時(shí),能不能通過(guò)具體的例子找出其中的規(guī)律,是能否解決這個(gè)問題的關(guān)鍵所在。這個(gè)題目只要從一個(gè)具體的二維數(shù)組的右上角開始分析,就能找到查找的規(guī)律,從而找到解決問題的突破口。
總結(jié)
以上是生活随笔為你收集整理的[剑指offer]面试题3:二维数组中的查找的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么把腾讯视频的qlv格式转换为mp4格
- 下一篇: [剑指offer]面试题5:从尾到头打印