• leecode---46---数组,dfs---求出数组的所有组合


    创建一个boolean数组去记录数组中每个数字的使用情况。
    dfs的入参:最终结果,当前结果,原数组,数组boolean值。
    如果当前结果长度等于数组长度记录结果。
    否则遍历数组boolean值从第一个位置开始遍历,如果是false说明没有使用过,那么将这个参数存入当前数组的同时将布尔值改变成false,然后进行下一次dfs。
    最后需要弹出该位置的参数,因为这个参数可以由其他参数替代。
     
     

     
     
    题意
    [1,2,3] have the following permutations:
    [
    [1,2,3],
    [1,3,2],
    [2,1,3],
    [2,3,1],
    [3,1,2],
    [3,2,1]
    ]
     
     
    分析
    1.要判断某个数字之前是否使用过,那么就必须
     
     
    代码
    class Solution {
        public List<List<Integer>> permute(int[] nums) {
            List<List<Integer>> res = new ArrayList<List<Integer>>();
            List<Integer> item = new ArrayList<Integer>();
            
            if(nums.length==0||nums==null)
                return res;
            boolean[] visited = new boolean[nums.length];  
            
            dfs(res,item,nums,visited);
            return res;
        }
        
        public void dfs(List<List<Integer>> res,List<Integer> temp,int[] nums,boolean[] visited) {
            //dfs终止条件
            if (temp.size() == nums.length) {
                res.add(new ArrayList(temp));
            }
            //首先这种dfs的遍历不是从某个pos的位置开始遍历,而是从头开始遍历的,因为可能前面的参数没有用过
            //否则就继续下一个层,也就是添加一个数字到temp里面去
            //也是从头开始遍历哪个数字用没用过,没用过就添加进去
            for (int i=0;i<nums.length;i++){
                if(visited[i] == false){
                    temp.add(nums[i]);
                    visited[i] = true;
                    dfs(res,temp,nums,visited);
                    temp.remove(temp.size() - 1);
                    visited[i] = false;
                }
            }
        }
    }
  • 相关阅读:
    HttpContext.GetOwinContext().Authentication 报错 解决办法
    owin Claims-based认证登录实现
    angularjs初识ng-app、ng-model、ng-repeat指令
    SpringBoot配置slf4j logback-spring.xml日志
    idea时间注释模版
    oracel截取字符串
    win10官网下载地址
    使用HttpWebRequest实现basic身份认证
    mybatis常用jdbcType数据类型与mysql的类型对照
    修改IntelliJ IDEA 默认配置路径
  • 原文地址:https://www.cnblogs.com/buptyuhanwen/p/8985899.html
Copyright © 2020-2023  润新知