zoukankan      html  css  js  c++  java
  • LeetCode 46 Permutations(全排列问题)

     
    Problem:给出一个数组(数组中的元素均不相同),求出这个数组能够产生的所有全排列
    采用递归算法,传入参数
    List<List<Integer>> list, List<Integer> tempList, int[] nums, boolean[] used
     
      其中list保存最终结果
      tempList保存其中一个全排列
      nums为最初的数组
      used随着计算不断更新,保存数组中元素是否已经使用过
    参考代码:
     
    package leetcode_50;
    
    import java.util.ArrayList;
    import java.util.List;
    
    
    /***
     * 
     * @author pengfei_zheng
     * 给定数组元素均不相同,求出所有全排列
     */
    public class Solution46 {
        public static List<List<Integer>> permute(int[] nums) {
            List<List<Integer>> list = new ArrayList<>();
            prem(list,new ArrayList<>(),nums,new boolean[nums.length]);
            return list;
        }
    
        private static void prem(List<List<Integer>> list, List<Integer> tempList, int[] nums, boolean[] used) {
            if(tempList.size()==nums.length){
                list.add(new ArrayList<>(tempList));
            }
            else{
                for(int i = 0; i < nums.length; i++){
                    if(used[i] || i>0 && nums[i]==nums[i-1] && !used[i-1]) continue;
                    used[i]=true;
                    tempList.add(nums[i]);
                    prem(list,tempList,nums,used);
                    used[i]=false;
                    tempList.remove(tempList.size()-1);
                }
            }
        }
        public static void main(String[]args){
            int []nums={1,2,3};
            List<List<Integer>> list = permute(nums);
            for(List<Integer> item:list){
                System.out.println(item);
            }
        }
    }
  • 相关阅读:
    python json模块出现Invalid control character这个异常的原因
    KMS服务,使用命令激活windows/office
    vscode Python文件头部信息
    MIMIC-III Clinical Database 翻译
    autohotkey 设置
    DeepLearning 写代码常用
    VScode 个人设置
    随机种子设置
    samba配置
    jieba 分词不显示日志
  • 原文地址:https://www.cnblogs.com/zpfbuaa/p/6542155.html
Copyright © 2011-2022 走看看