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
- 回溯法解決全排列問題總結
- LeetCode-047-全排列 IILeetCode
- LeetCode 45跳躍遊戲&46全排列LeetCode遊戲
- leetcode:組合總和II(回溯java)LeetCodeJava
- 【leetcode】60. Permutation Sequence 全排列的第k位序的排列形式LeetCode
- 【力扣】排列問題(回溯法)(去重)力扣
- 從基礎講全排列(Java實現)Java
- 字串全排列字串
- 下一個排列(LeetCode)LeetCode
- 回溯法(排列樹)解決八(N)皇后問題
- LeetCode 567. 字串的排列LeetCode字串
- LeetCode-441-排列硬幣LeetCode
- 回溯問題Python框架總結——排列組合問題Python框架
- 全排列演算法演算法
- 演算法——全排列演算法
- LeetCode31.下一個排列LeetCode
- Day 28 | 491.遞增子序列 、46.全排列、 47.全排列 II
- 遞迴-*全排列問題遞迴
- 【Algorithm】全排列演算法Go演算法
- JavaScript陣列元素全排列JavaScript陣列
- leetcode題解(遞迴和回溯法)LeetCode遞迴
- 程式碼隨想錄演算法訓練營day29 | leetcode 491. 非遞減子序列、46. 全排列、47. 全排列 II演算法LeetCode
- LeetCode 1470. 重新排列陣列LeetCode陣列
- LeetCode 31. 下一個排列 | PythonLeetCodePython
- 全排列及相關擴充套件演算法(二)——求字典序下一組排列及全排列演算法套件演算法
- js陣列全排列問題JS陣列
- 有重複元素的全排列
- 藍橋杯全排列專題
- 位右移 字母大小寫全排列
- LeetCode HOT 100:子集(簡單易懂的回溯)LeetCode
- LeetCode演算法訓練-回溯總結LeetCode演算法
- LeetCode每日一題: 排列硬幣(No.441)LeetCode每日一題
- 「leetcode」78. 子集【回溯演算法】詳解!LeetCode演算法