leetcode 46 全排列(回溯)

2021-09-24 12:34:54 字數 989 閱讀 7562

給定乙個沒有重複數字的序列,返回其所有可能的全排列。

示例:

輸入: [1,2,3]

輸出:[

[1,2,3],

[1,3,2],

[2,1,3],

[2,3,1],

[3,1,2],

[3,2,1]

]

核心的遞迴部分如下:

for begin in

range(0

,n):

for i in

range

(begin,n)

: swap(nums[begin]

,nums[i]);

permutecore(nums,begin+1)

swap(nums[begin]

,nums[i]

);

不斷交換首元素與後續元素的位置,直到到達最後乙個元素時回溯。

複雜度分析

時間複雜度:o(n^2)

空間複雜度:o(1)

class

solution

// 回溯求解

LeetCode 46 全排列(回溯)

給定乙個沒有重複數字的序列,返回其所有可能的全排列。示例 輸入 1,2,3 輸出 1,2,3 1,3,2 2,1,3 2,3,1 3,1,2 3,2,1 類似題目 leetcode 996.正方形陣列的數目 回溯 剪枝 class solution void bt vector int nums,i...

Leetcode 46 全排列(經典回溯法)

2021年03月18日 周四 天氣晴 不悲嘆過去,不荒廢現在,不懼怕未來 參考文獻 46.全排列 這是我第一次做的時候寫出的答案,比較容易理解。雖然可以通過,但是要比官方法 下面的交換法 更加耗時一些。class solution for int i first i len i vector int...

Leetcode 46 全排列(中等) 回溯演算法

labuladong講解 46.全排列 中等 題目 給定乙個不含重複數字的陣列 nums 返回其 所有可能的全排列 你可以 按任意順序 返回答案。示例 1 輸入 nums 1,2,3 輸出 1,2,3 1,3,2 2,1,3 2,3,1 3,1,2 3,2,1 思路 使用回溯演算法框架,遍歷所有可能...