【題目描述】
Given a list of numbers, return all possible permutations.
Notice:You can assume that there is no duplicate numbers in the list.
給定一個數(shù)字列表眼俊,返回其所有可能的排列贞绳。
注意:你可以假設(shè)沒有重復(fù)數(shù)字秕硝。
【題目鏈接】
http://www.lintcode.com/en/problem/permutations/
【題目解析】
遇到這種問題祖能,很顯然钱烟,第一個想法我們首先回去想到DFS,遞歸求解,對于數(shù)組中的每一個元素,找到以他為首節(jié)點(diǎn)的Permutations,這就要求在遞歸中昔案,每次都要從數(shù)組的第一個元素開始遍歷乒验,這樣愚隧,,就引入了另外一個問題锻全,我們會對于同一元素訪問多次奸攻,這就不是我們想要的答案了蒜危,所以我們引入了一個bool類型的數(shù)組,用來記錄哪個元素被遍歷了(通過下標(biāo)找出對應(yīng)).在對于每一個Permutation進(jìn)行求解中睹耐,如果訪問了這個元素,我們將它對應(yīng)下表的bool數(shù)組中的值置為true,訪問結(jié)束后辐赞,我們再置為false.
時間復(fù)雜度分析: 這道題同Combination,所以對于這道題的解答,時間復(fù)雜度同樣是O(n!)
【答案鏈接】