劍指 offer 筆記 01 | 二維數(shù)組中的查找

題目描述:

在一個(gè)二維數(shù)組中(每個(gè)一維數(shù)組的長(zhǎng)度相同)喻括,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請(qǐng)完成一個(gè)函數(shù)慌随,輸入這樣的一個(gè)二維數(shù)組和一個(gè)整數(shù),判斷數(shù)組中是否含有該整數(shù)躺同。

看著有點(diǎn)懵逼阁猜,不如在紙上先畫(huà)出圖形,先初始化一組數(shù)組蹋艺,int [ 4 ] [ 4 ]剃袍,大概如下:

image.png

從題目要求可知道,要輸入一個(gè) target 车海,也就是目標(biāo)數(shù)字笛园,去二維數(shù)組中查找,是否存在侍芝,如果存在就返回 true 研铆,不存在返回 false。

怎么查找呢州叠?

大家有沒(méi)有發(fā)現(xiàn)棵红,這組二維數(shù)組的規(guī)律,每一行從左到右遞增咧栗,每一列從上到下遞增逆甜。

根據(jù)這個(gè)特點(diǎn)來(lái)查找,不知道大家有沒(méi)有玩過(guò)“吃雞”游戲致板,聰明的玩家喜歡邊緣 OB 交煞,在毒圈邊界中活動(dòng)。那么這個(gè)算法的核心也如此斟或。

從每一行看素征,右上角的數(shù)字是該行的最大數(shù)字;

從每一列上看,右上角數(shù)字是該列的最小值御毅;

關(guān)鍵點(diǎn)就是取數(shù)組右上角的數(shù)字根欧,來(lái)與 target 比較;

如果第一行右上角的數(shù)字端蛆,剛好等于 target 凤粗,那么查找結(jié)束,返回 true今豆;

如果 target 小于 數(shù)組右上角數(shù)字嫌拣,那么這個(gè)右上角數(shù)字所在的列可以排除掉了(因?yàn)樗诹惺且来芜f增的);

如果 target 大于 數(shù)組右上角數(shù)字晚凿,那么可以排除右上角數(shù)字所在行了亭罪;(原理同上)

就這樣依次邊緣 OB,縮小毒圈歼秽,成功吃雞应役!

舉個(gè)例子:

假設(shè)我現(xiàn)在要找的 target 是 7,要在二維數(shù)組中查詢(xún)燥筷,第一次查詢(xún)即如下:


image.png

第二次查詢(xún)

image.png

第三次查詢(xún)

image.png

核心代碼如下:

public boolean Find(int target, int [][] array) {
if (array == null || array.length ==0 || array[0].length == 0) {
            return false;
        }
        int rows = array.length;//行數(shù)
        int columns = array[0].length;//列數(shù)
        if (target > array[rows - 1][columns - 1] || target < array[0][0]) {
            return false;
        }
        rows = 0;
        for (int i = columns - 1; i >= 0 && rows < array.length; ) {
            if (array[rows][i] == target) {
                return true;
            } 
            if (target < array[rows][i]) {
                i--;
                continue;
            } 
            if (target > array[rows][i]) {
                rows++;
                continue;
            }
        }
        return false;
    }

參考文獻(xiàn):
https://blog.csdn.net/u010002184/article/details/79518961
https://www.nowcoder.com/questionTerminal/abc3fe2ce8e146608e868a70efebf62e

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末箩祥,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子肆氓,更是在濱河造成了極大的恐慌袍祖,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谢揪,死亡現(xiàn)場(chǎng)離奇詭異蕉陋,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)拨扶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)凳鬓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人患民,你說(shuō)我怎么就攤上這事缩举。” “怎么了匹颤?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵仅孩,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我印蓖,道長(zhǎng)辽慕,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任赦肃,我火速辦了婚禮溅蛉,結(jié)果婚禮上绞旅,老公的妹妹穿的比我還像新娘。我一直安慰自己温艇,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布堕汞。 她就那樣靜靜地躺著勺爱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪讯检。 梳的紋絲不亂的頭發(fā)上琐鲁,一...
    開(kāi)封第一講書(shū)人閱讀 51,698評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音人灼,去河邊找鬼围段。 笑死,一個(gè)胖子當(dāng)著我的面吹牛投放,可吹牛的內(nèi)容都是我干的奈泪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼灸芳,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼涝桅!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起烙样,我...
    開(kāi)封第一講書(shū)人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤冯遂,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后谒获,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體蛤肌,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年批狱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了裸准。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡精耐,死狀恐怖狼速,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情卦停,我是刑警寧澤向胡,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站惊完,受9級(jí)特大地震影響僵芹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜小槐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一拇派、第九天 我趴在偏房一處隱蔽的房頂上張望荷辕。 院中可真熱鬧,春花似錦件豌、人聲如沸疮方。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)骡显。三九已至,卻和暖如春曾掂,著一層夾襖步出監(jiān)牢的瞬間惫谤,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工珠洗, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留溜歪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓许蓖,卻偏偏與公主長(zhǎng)得像蝴猪,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蛔糯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容