Java 求解全排列
Posted 南淮北安
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 求解全排列相关的知识,希望对你有一定的参考价值。
一、题目
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
二、题解
该题,比较简单,对数字可以随意选,但是对顺序有要求,所以可以设置,boolean 数组表示数字是否已经被选过
三、代码
class Solution
List<List<Integer>> lists = new ArrayList<>();
Deque<Integer> deque = new LinkedList<>();
public List<List<Integer>> permute(int[] nums)
// 标识数组
boolean[] flags = new boolean[nums.length];
backTracking(nums, flags);
return lists;
public void backTracking(int[] nums, boolean[] flags)
// 终止条件,队列将数组元素全部存入
if (deque.size() == nums.length)
lists.add(new ArrayList(deque));
for (int i = 0; i < nums.length; i++)
// 每一个子序列,数字只能出现一次
if (!flags[i])
flags[i] = true;
deque.addLast(nums[i]);
backTracking(nums, flags);
deque.removeLast();
flags[i] = false;
四、总结
标识数组,标识每一位只能出现一次
以上是关于Java 求解全排列的主要内容,如果未能解决你的问题,请参考以下文章