// 冲刺032
class Solution {
int len;
public List<List<Integer>> permute(int[] nums) {
List<List<Integer>> ans = new LinkedList<>();
len = nums.length;
dfs(new boolean[len], nums, new LinkedList<>(), ans);
return ans;
}
void dfs(boolean[] use, int[] nums, Deque<Integer> now, List<List<Integer>> ans) {
if(now.size() == len) {
ans.add(new LinkedList<>(now));
} else {
for (int i = 0; i < len; i++) {
if(use[i] == false) {
use[i] = true;
now.add(nums[i]);
dfs(use, nums, now, ans);
use[i] = false;
now.removeLast();
}
}
}
}
}
Leetcode_46_全排列_dfs
最新推荐文章于 2024-03-11 08:30:00 发布
本文介绍了一种使用深度优先搜索(DFS)实现的Java解决方案,用于生成整数数组的所有可能排列。Solution类中的permute方法利用回溯技巧,通过boolean数组标记已使用的元素,生成并存储所有合法的排列组合。此算法适用于计算机科学中的组合数学和动态规划问题。
摘要由CSDN通过智能技术生成