劍指offer學習讀書筆記 二維陣列中的查詢

2021-07-07 04:55:11 字數 621 閱讀 2758

在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都是按照從上到下遞增的順序排序。請設計乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列是否含有這個整數。

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 ...