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);
            }
        }
    }
  • 相关阅读:
    微服务简介
    Apache httpd.conf
    搭建PHP开发环境
    搭建Apache开发环境
    Swift 项目编译优化(一)
    用Flutter 写一个简单页面
    Sign In With Apple(一)(转)
    Xcode DeviceSupport
    MQTT初始篇笔记整理
    UITableView使用过程中可能遇到的问题
  • 原文地址:https://www.cnblogs.com/zpfbuaa/p/6542155.html
Copyright © 2011-2022 走看看