zoukankan      html  css  js  c++  java
  • [LeetCode-JAVA] Permutations

    题目:Given a collection of numbers, return all possible permutations.

    For example,
    [1,2,3] have the following permutations:
    [1,2,3][1,3,2][2,1,3][2,3,1][3,1,2], and [3,2,1]

    思路:最近都是在做DFS有关的,第一时间的反应就是可以用DFS的思想,唯一需要注意的就是在遍历的过程中,要查看是否是已经被选择的数字,这里用Set来进行排查,思路比较简单。

    代码:

        public List<List<Integer>> permute(int[] nums) {
            List<List<Integer>> req = new ArrayList<List<Integer>>();
            
            List<Integer> temp = new ArrayList<Integer>();
            Set<Integer> set = new HashSet<Integer>(); 
            dfs(req, temp, set, nums, 0);
            return req;
        }
        public void dfs(List<List<Integer>> req, List<Integer> temp, Set<Integer> set, int[] nums, int level){
            //level记录遍历的层数
            if(level == nums.length){
                req.add(new ArrayList<Integer>(temp));
                return;
            }
            
            for(int i = 0 ; i < nums.length ; i++){
                if(set.contains(nums[i]))
                    continue;
                temp.add(nums[i]);
                set.add(nums[i]);
                level++;
                dfs(req, temp, set, nums, level);
                level--;
                set.remove(temp.get(temp.size()-1));
                temp.remove(temp.size() - 1 );
            }
            
        }
  • 相关阅读:
    BZOJ 1218: [HNOI2003]激光炸弹( 前缀和 + 枚举 )
    BZOJ 1878: [SDOI2009]HH的项链( BIT )
    BZOJ 1054: [HAOI2008]移动玩具( BFS )
    js-提取行间元素
    vim的三种模式的基本操作
    Linux的高级命令
    Linux的进阶命令
    Linux的基本命令
    Linux常见的文件目录结构
    js-操作属性
  • 原文地址:https://www.cnblogs.com/TinyBobo/p/4469027.html
Copyright © 2011-2022 走看看