在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。
/**
首先進行分析,在該二維陣列中,從左向右以次遞增,從上向下以次遞增,我第一次時間想到的是折半查詢,先是從行開始,在從列開始進行查詢
但是這這樣會有重複查詢,而且很多人都會這樣想,顯然做法不可取,必須在毫無其他想法的情況下才能這樣去做。
接下來思考這個陣列的特性是什麼:
1.每一行的最後一位數都大於前面的數字
2.每一列的最後一位數都大於上面的數字
3.在二維陣列中記憶體佔據連續的空間,在記憶體中從上到下儲存各行元素,在同一行中從左向右儲存,所以我們才能根據行號和列號計算出相對
應陣列的首位址的偏移量從而找到元素。
我可以根據這個特性來查詢,我的比較數,和右上角的進行比較,它只有三種情況,大於,小於或者等於。
1.大於,很顯然只能從該數字的下一行進行比較。可以捨棄該數字所在的這一行,直到最後一行
2.小於,很顯然不可能是該數字所在的這一列,可以捨棄該數字所在的這一列,從前一列開始,直到最後一列
3.等於,直接輸出返回true就行了。
二維陣列中查詢
1.問題描述 在乙個二維陣列中,每一行按照從左到右的遞增順序排序,每一列按照從上到下的遞增的順序排序,請完成這樣乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列是否含有該整數。來自 劍指offer 2.分析 首先選取陣列中右上角的數字。如果該數字等於要查詢的數字,查詢過程結束 如果該數字大於要查...
二維陣列中查詢
乙個二維陣列,每一行從左到右,每一列從上到下,都是按遞增順序排列,輸入乙個二維陣列和某個數,判斷陣列中是否存在這個數 排除行和列 比如從右上角元素出發。先確定列的範圍,如果查詢數大於當前列的第一行數,那麼這一行的所有數都大於查詢數,排除,繼續查詢左邊列 確定行範圍,在前面列的範圍內,如果最右邊元素小...
二維陣列中查詢
題目描述 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。思路解析 這是一道比較基礎的題,就是找二維陣列中的乙個數。方案一 暴力 function find target,array...