全排列(21-03-09)

給定一個(gè) 沒有重復(fù) 數(shù)字的序列,返回其所有可能的全排列。

示例:

輸入: [1,2,3]
輸出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]

class Solution {
    public List<List<Integer>> permute(int[] nums) {
        List<List<Integer>> res = new ArrayList<List<Integer>>();

        List<Integer> output = new ArrayList<Integer>();
        for (int num : nums) {
            output.add(num);
        }

        int n = nums.length;
        backtrack(n, output, res, 0);
        return res;
    }

    public void backtrack(int n, List<Integer> output, List<List<Integer>> res, int first) {
        // 所有數(shù)都填完了
        if (first == n) {
            res.add(new ArrayList<Integer>(output));
        }
        for (int i = first; i < n; i++) {
            // 動(dòng)態(tài)維護(hù)數(shù)組
            Collections.swap(output, first, i);
            // 繼續(xù)遞歸填下一個(gè)數(shù)
            backtrack(n, output, res, first + 1);
            // 撤銷操作
            Collections.swap(output, first, i);
        }
    }
}

另一種解法


1234.png
知識(shí)點(diǎn)補(bǔ)充

1沥曹、Collections.swap() 集合類交換兩個(gè)位置的元素Collections.swap(集合, 位置1,位置2); 1和2調(diào)換位置

 public static void main(String[] args) {
        ArrayList<Object> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);

        Collections.swap(list, 0, 1);
        System.out.println(list);
    }

    [2, 1, 3]

2捅厂、回溯法:一種通過(guò)探索所有可能的候選解來(lái)找出所有的解的算法探橱。如果候選解被確認(rèn)不是一個(gè)解(或者至少不是最后一個(gè)解),回溯算法會(huì)通過(guò)在上一步進(jìn)行一些變化拋棄該解蛮放,即回溯并且再次嘗試

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末缩抡,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子包颁,更是在濱河造成了極大的恐慌瞻想,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,378評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件娩嚼,死亡現(xiàn)場(chǎng)離奇詭異蘑险,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)岳悟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門佃迄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人贵少,你說(shuō)我怎么就攤上這事和屎。” “怎么了春瞬?”我有些...
    開封第一講書人閱讀 168,983評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)套啤。 經(jīng)常有香客問我宽气,道長(zhǎng)随常,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,938評(píng)論 1 299
  • 正文 為了忘掉前任萄涯,我火速辦了婚禮绪氛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘涝影。我一直安慰自己枣察,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評(píng)論 6 398
  • 文/花漫 我一把揭開白布燃逻。 她就那樣靜靜地躺著序目,像睡著了一般。 火紅的嫁衣襯著肌膚如雪伯襟。 梳的紋絲不亂的頭發(fā)上猿涨,一...
    開封第一講書人閱讀 52,549評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音姆怪,去河邊找鬼叛赚。 笑死,一個(gè)胖子當(dāng)著我的面吹牛稽揭,可吹牛的內(nèi)容都是我干的俺附。 我是一名探鬼主播,決...
    沈念sama閱讀 41,063評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼溪掀,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼事镣!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起膨桥,我...
    開封第一講書人閱讀 39,991評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蛮浑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后只嚣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沮稚,經(jīng)...
    沈念sama閱讀 46,522評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評(píng)論 3 342
  • 正文 我和宋清朗相戀三年册舞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蕴掏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,742評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡调鲸,死狀恐怖盛杰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情藐石,我是刑警寧澤即供,帶...
    沈念sama閱讀 36,413評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站于微,受9級(jí)特大地震影響逗嫡,放射性物質(zhì)發(fā)生泄漏青自。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評(píng)論 3 335
  • 文/蒙蒙 一驱证、第九天 我趴在偏房一處隱蔽的房頂上張望延窜。 院中可真熱鬧,春花似錦抹锄、人聲如沸逆瑞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)获高。三九已至,卻和暖如春车份,著一層夾襖步出監(jiān)牢的瞬間谋减,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工扫沼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留出爹,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,159評(píng)論 3 378
  • 正文 我出身青樓缎除,卻偏偏與公主長(zhǎng)得像严就,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子器罐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 總結(jié) 解決一個(gè)回溯問題梢为,實(shí)際上就是一個(gè)決策樹的遍歷過(guò)程。你只需要思考 3 個(gè)問題:1轰坊、路徑:也就是已經(jīng)做出的選擇铸董。...
    我是小曼巴閱讀 982評(píng)論 0 0
  • 給定一個(gè)沒有重復(fù)數(shù)字的序列粟害,返回其所有可能的全排列。示例:輸入: [1,2,3]輸出:[[1,2,3],[1,3,...
    上行彩虹人閱讀 266評(píng)論 0 0
  • 題目 給定一個(gè)沒有重復(fù)數(shù)字的序列颤芬,返回其所有可能的全排列悲幅。 示例: 輸入: [1,2,3]輸出:[[1,2,3],...
    倚劍賞雪閱讀 305評(píng)論 0 0
  • 給定一個(gè)可包含重復(fù)數(shù)字的序列 nums ,按任意順序 返回所有不重復(fù)的全排列站蝠。 示例 1: 輸入:nums = [...
    刻苦驢噥閱讀 136評(píng)論 0 0
  • 題目描述 給定一個(gè)沒有重復(fù)數(shù)字的序列菱魔,返回其所有可能的全排列留荔。 示例: 輸入: [1,2,3]輸出:[[1,2,3...
    河海中最菜閱讀 241評(píng)論 0 0