面試題03 二維陣列中查詢 劍指offer系列

2021-07-03 21:24:11 字數 672 閱讀 3131

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

這是一道考查二維陣列的理解和程式設計能力的題。

在二維陣列在記憶體中是連續儲存的。在記憶體中從上到下儲存各行元素,在同一行中按照從左到右儲存。

因此可以按照行號和列號來計算出相對陣列首部的位置。

由於每一行 和 每一列都是有序的,因此,我們可以拿要查詢的數與陣列的右上角的數進行比較。

因為每一行從左到右遞增,每一列從上到下遞增。

所以查詢乙個數num,可以這樣做:

首先拿num與右上角的數進行比較。

若相等,則直接返回,找到該數。

若num < 右上角數,則剔除右上角數所在列 col--

若num > 右上角數,則剔除右上角數所在行 row++

有了這個思路,我們就可以進行寫**了。

其實,還可以選擇與左下角的數進行比較。方法與上述跟右上角數比較一樣。

class solution 

else if (array[row][col] > target)

--col;

else

++row;

}} return ans;

}};

劍指offer面試題 二維陣列的查詢

思路 當我們看到這道題的第一反應應該是遍歷這個二維陣列,逐個進行查詢,這樣雖然可以得到結果但是時間複雜度較大,並且沒有用到題目中給我們的線索,我們可以看到該二維數字是按照一定順序排列的。我們可以把這個四行四列的二維陣列看做乙個4 4的方格,先找出右上角的數字,如果右上角的數字是我們要找的數字就結束,...

劍指offer 面試題04 二維陣列查詢

二維陣列查詢 在乙個 n m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。示例 現有矩陣 matrix 如下 1,4,7,11,15 2,5,8,12,19 3,6,9,16,22 ...

劍指offer 面試題3 二維陣列中的查詢

題目 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的殊勳排序。請完成乙個函式,輸入這樣乙個二維陣列和乙個整數,判斷陣列中是否有該整數。示例陣列 12 89 24 912 47 1013 68 1115 分析 若從左上角開始,則該證書可能在當前數字右邊,也可能在當前數...