劍指offer演算法 陣列遍歷

2021-08-24 23:26:00 字數 578 閱讀 7220

題目描述:

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

分析與實現:

在二位陣列中查詢乙個數,我們可以一次遍歷進行與目標資料比較得出,但這種方法的複雜度很大(n平方)。由於每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序,所以當我們選擇從二位陣列的左下角開始查詢遍歷時,會大大降低演算法複雜度(複雜度是n)。

從左下角開始查詢的思路是:當目標數大於當前數時行不變,列增加1(此時只能是列加1,如果讓行加1的話會在原地上下徘徊出現死迴圈),當目標數小於當前數時列不變行減一,搜尋路徑類似台階,如下查詢數字9的查詢路線。

演算法:

public class arraysereach else if(array[len][i] < target)else

}return false;}}

演算法 劍指 Offer 廣度優先遍歷

把每一層的節點存放在佇列中,迴圈判斷佇列是否為空,每次迴圈取出佇列內節點,並把取出的節點的左右子節點存入佇列中。public list levelorder treenode root while queue.isempty if objects.nonnull tmpnode.right res....

劍指offer 遍歷搜尋

1.廣度優先思想 適合題目 給定初始狀態跟目標狀態,要求從初始狀態到目標狀態的最短路徑。輔助資料結構是佇列。1.1 prime最小生成樹 1.2 dijkstra單源最短路徑演算法 1.3 樹的分層遍歷,二叉樹的最小深度 1.4 走迷宮,從起點到終點的最短路徑 定義乙個二維陣列 int maze 5...

劍指offer 陣列

資料是最簡單的資料結構,它佔據一塊連續的記憶體並按照順序儲存資料。建立陣列時,首先指點陣列的容量大小,然後根據大小分配記憶體。缺點 空間效率不高。經常有空閒的區域滅有得到充分利用。優點 時間效率很高。可以根據時間效率高的特點,來實現簡單的雜湊表 把陣列的下標設為雜湊表的鍵值,陣列中的每乙個數字設為雜...