leetcode:全排列(java回溯)
package LeetCode;
import java.util.ArrayList;
import java.util.List;
/*
給定一個沒有重複數字的序列,返回其所有可能的全排列。
示例:
輸入: [1,2,3]
輸出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
//基本思想:回溯思想進行每一層迴圈
*/
public class Permute {
public List<List<Integer>> permute(int[] nums) {
List<List<Integer>> result=new ArrayList<>();
List<Integer> l=new ArrayList<>();
huisu(nums,l,result);
return result;
}
public void huisu(int[] nums,List<Integer> l,List<List<Integer>> result){
if (l.size()==nums.length){
//指向新的一片地址空間使其變成不在跟隨l改變而改變
result.add(new ArrayList<Integer>(l));
return;
}else {
for (int i = 0; i <nums.length ; i++) {
//判斷
if (l.contains(nums[i]))continue;
l.add(nums[i]);
huisu(nums,l,result);
//退回一格
l.remove(l.size()-1);
}
}
}
public static void main(String[] args){
Permute a=new Permute();
int []b={1,2,3};
a.permute(b);
}
}
相關文章
- LeetCode46 回溯演算法求全排列,這次是真全排列LeetCode演算法
- 回溯法解決全排列問題總結
- Leetcode——46. 全排列LeetCode
- 【LeetCode】46. 全排列LeetCode
- LeetCode系列46—全排列LeetCode
- LeetCode-046-全排列LeetCode
- Java實現-全排列Java
- LeetCode-047-全排列 IILeetCode
- 字串全排列 java實現字串Java
- LeetCode 45跳躍遊戲&46全排列LeetCode遊戲
- 【leetcode】60. Permutation Sequence 全排列的第k位序的排列形式LeetCode
- leetcode:組合總和II(回溯java)LeetCodeJava
- 字串全排列字串
- 【力扣】排列問題(回溯法)(去重)力扣
- 從基礎講全排列(Java實現)Java
- 字串的全排列字串
- Java實現全排列、組合演算法Java演算法
- 回溯法(排列樹)解決八(N)皇后問題
- 全排列演算法演算法
- 演算法——全排列演算法
- Day 28 | 491.遞增子序列 、46.全排列、 47.全排列 II
- 【Algorithm】全排列演算法Go演算法
- JavaScript陣列元素全排列JavaScript陣列
- 回溯問題Python框架總結——排列組合問題Python框架
- 下一個排列(LeetCode)LeetCode
- js陣列全排列問題JS陣列
- 有重複元素的全排列
- 全排列及相關擴充套件演算法(二)——求字典序下一組排列及全排列演算法套件演算法
- 程式碼隨想錄演算法訓練營day29 | leetcode 491. 非遞減子序列、46. 全排列、47. 全排列 II演算法LeetCode
- LeetCode-441-排列硬幣LeetCode
- LeetCode 567. 字串的排列LeetCode字串
- 遞迴解決全排列問題遞迴
- [演算法]全排列類問題演算法
- 實現自然數N的全排列
- 全排列價值(數學問題)
- leetcode題解(遞迴和回溯法)LeetCode遞迴
- LeetCode31.下一個排列LeetCode
- 前端電商 sku 的全排列演算法前端演算法