LeetCode-046-全排列

全排列

题目描述:给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
【LeetCode-046-全排列】示例说明请见LeetCode官网。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/probl...
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解法一:暴力破解法
用一个队列temp记录暂存的结果,每次遍历从队列中取出一个结果,然后往list中添加一个nums中的元素,其中要判断要添加的元素是否已经存在,如果存在,则重复了,不添加;如果不存在,则添加到队列中作为其中一个可能的结果。直到所有的list中的元素个数都是nums.length,返回所有的结果。
import java.util.*; public class LeetCode_046 { public static List> permute(int[] nums) { List> result = new ArrayList<>(); int count = 0; List list = new ArrayList<>(); Queue> temp = new LinkedList<>(); temp.add(list); while (count < nums.length) { int times = temp.size(); while (times > 0) { List cur = temp.poll(); for (int num : nums) { List next = new ArrayList(Arrays.asList(new Integer[cur.size()])); Collections.copy(next, cur); if (!next.contains(num)) { next.add(num); temp.add(next); } } times--; } count++; } result.addAll(temp); return result; }public static void main(String[] args) { int[] nums = new int[]{1, 2}; for (List integers : permute(nums)) { for (Integer integer : integers) { System.out.print(integer + " "); } System.out.println(); } } }

【每日寄语】 每天醒来将微笑别在衣襟就会遇见更多的美好。

    推荐阅读