在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都是按照從上到下遞增的順序排序。請設計乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列是否含有這個整數。
1 2 8 9
2 4 9 12
4 7 10 13
6 8 11 15
我們可以發現以下規律:首先選取陣列右上角的數字。如果這個數字是要尋找的數字,則返回結果。若這個數字大於我們要尋找的數字,則去除這個數字所在的列;若這個數字小於我們要尋找的數字,則去除這個數字所在的行。也就是說如果查詢的數字不在陣列的右上角,則每一次都在陣列查詢範圍中剔除一行或者一列,這樣每一步都可以縮小查詢的範圍了,直到找到需要查詢的數字或者查詢的範圍為空。
從另外乙個角度看,從左下角的數字來看,如果這個數字大於查詢的數字,則剔除該行,若這個數字小於查詢的數字,則剔除該列。
bool find(int* matrix,int rows,int cols,int num)
else
if(matrix[row*cols + col] > num)
-- col;
else
++ row;}}
return found;
}
劍指offer讀書筆記
1 陣列 陣列佔據一塊連續記憶體,按順序儲存元素。定義陣列時,因為陣列中資料連續,需要事先指定陣列規模大小,根據大小分配記憶體。由於陣列記憶體連續,可以在o 1 時間內讀 寫任何元素,因此可以用陣列來實現簡單的hash表。為解決陣列空間效率不高的問題,設計了多種動態陣列,比如vector。陣列和指標...
《劍指offer》讀書筆記(1)
簡歷中描述專案的star模型 situation 簡短的專案背景,比如專案的規模,開發的軟體的功能 目標使用者等。task 自己完成的任務。寫詳細,要讓面試官對你的工作一目了然。用詞上注意區分參與和負責。負責某個專案是指,理解專案的總體框架設計 核心演算法 團隊合作等問題。action 為了完成任務...
劍指offer讀書筆記(1)
1 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。public class solution else if array l i target else return false ...