Problem#
有一個整數陣列 nums
裏頭有 $n$ 個 unique 的元素。題目給你一個 adjacentPairs[i] = [ui, vi]
陣列有 $n-1$ 個元素,代表 ui
與 vi
在 nums
相鄰。保證所有 nums
相鄰的數字一定出現在 adjacentPairs
中,可能以任意順序出現。
回傳原始的 nums
陣列,如果有多種解,回傳任意一種。
測資限制#
nums
長度: $2 \le n \le 10^5$adjacentPairs
長度: $== n-1$- $-10^5 \le \text{nums[i]}, u_i, v_i \le 10^5$
想法#
觀察: 開頭與結束的數字都只有一個數字與它相鄰,其他都有兩個數字 -> 找起點。可以用 map
統計每個數字的相鄰情況 $O(n\log{n})$,接著就從起點開始去 dfs,還原出 nums
陣列。
dfs 一路往前,不能往回走,過程紀錄當前、前個數字,當下個數字與前個數字相同時,且多次當前數字沒有更新,代表結束。
AC Code#
- 時間複雜度: $\mathcal{O}(n\log{n})$
- 空間複雜度: $\mathcal{O}(n)$
心得#
注意數值邊界(尤其負的),還有 dfs 的 break (不 break 的話 range for 會不預期)