LeeCode46フルアレイ(Java)(dfs)

トピックリンク:LeeCode46完全配置
トピックの説明:ここに画像の説明を挿入
剪定がない限り、最も単純な詳細検索で、一致したすべての解が返されます。唯一の落とし穴は、サンプルに負の数があることです。私が判断したブール配列前にエラーを報告します、マップに変更するだけです

public static List<List<Integer>> permute(int[] nums) {
    
    
        List<List<Integer>> lists = new ArrayList<>();

        Map<Integer,Boolean> map=new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
    
    
            map.put(nums[i],true);
        }
        for (int i = 0; i < nums.length; i++) {
    
    
            List<Integer> list=new ArrayList<>();
            list.add(nums[i]);
            map.put(nums[i],false );
            dfs(nums,1,lists,list,map);
            map.put(nums[i],true );
        }
        return lists;
    }
    public static void dfs(int[] nums,int step,List<List<Integer>> lists,List<Integer> list,Map<Integer,Boolean> map){
    
    
        if (step >= nums.length) {
    
    
            List<Integer> list1=new ArrayList<>();
            for (int i = 0; i < list.size(); i++) {
    
    
                list1.add(list.get(i));
            }
            lists.add(list1);
            list.remove(list.size()-1);
            return;
        }
        for (int i = 0; i < nums.length; i++) {
    
    
            if(map.get(nums[i])==true){
    
    
                list.add(nums[i]);
                map.put(nums[i],false);
                dfs(nums, step+1, lists, list, map);
                map.put(nums[i],true);
            }
        }
        list.remove(list.size()-1);
    }

おすすめ

転載: blog.csdn.net/weixin_43590593/article/details/112562196