栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

LeetCode-046-全排列

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode-046-全排列

全排列

题目描述:给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。

示例说明请见LeetCode官网。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/permutations/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解法一:暴力破解法

用一个队列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();
        }
    }
}

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/287026.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号