開始學(xué)算法(刷算法題)過程記錄 3
2022-05-07 11:28 作者:學(xué)途壓力大 | 我要投稿
題目描述: 在一個(gè)二維數(shù)組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請(qǐng)完成一個(gè)函數(shù),輸入這樣的一個(gè)二維數(shù)組和一個(gè)整數(shù),判斷數(shù)組中是否含有該整數(shù)(返回true或false)
題目關(guān)鍵:數(shù)組中最右上角的數(shù)字是最上面一行中最大的和最右邊一列中最小的,最左下角的數(shù)字是最左邊一列最大的和最下面一行最小的

解題思路:
假如找7,從右上角看,9比7大,最右邊一列比9還大,可以排除最右一列

同理,還是取最右上角的,8 還是比7大 再排除最右一列

再看最右上角,2比7小,2左邊的比2都小,所以可以排除最上面一行,同理可以排除4所在行

再取右上角,每次循環(huán)前會(huì)進(jìn)行一次判斷右上角是否等于要找的數(shù),發(fā)現(xiàn)是7返回true
算法實(shí)現(xiàn):
這是從右上角開始找 還有一種解法是左下角開始找,原理是一樣的,對(duì)比要找的數(shù)大小排除行列
不能選左上角或右下角原因是 都小 和 都大。1是最上面一列最小,又是最左邊最小。無法排除行或列
標(biāo)簽: