zoukankan      html  css  js  c++  java
  • 47.Permutations 1&2

    1.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].

    2.

    Given a collection of numbers that might contain duplicates, return all possible unique permutations.

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

    solution:DFS

           1                      2                           3

      12    13              21     23                  32  31

    123      132         213     231             321    312

    package leetcode2;
    
    import java.util.*;
    
    public class Permutations {
         public static ArrayList<ArrayList<Integer>> permute(int[] num) {
             ArrayList<ArrayList<Integer>> res=new ArrayList<ArrayList<Integer>>();
             ArrayList<Integer>  mem =new  ArrayList<Integer>();
             int deep=0;
             int length=num.length;
             boolean visit[]=new boolean[length];
             dfs(res,mem,deep,num,visit,length);
             return res;
            }
         
        public static void dfs(ArrayList<ArrayList<Integer>> res,
                ArrayList<Integer> mem, int deep, int[] num,boolean[] visit,int l) {
            
            // TODO Auto-generated method stub
            if(deep==l){
                if(!res.contains(new ArrayList<Integer>(mem))){
                res.add(new ArrayList<Integer>(mem));
                }
                return;
            }
            if(deep<l){
                for(int i=0;i<l;i++){
                    if(i>0 && num[i-1] == num[i] && !visit[i-1])
                     continue;
                    if(!visit[i]){
                    mem.add(num[i]);
                    visit[i]=true;
                    dfs(res,mem,deep+1,num,visit,l);
                    if(mem.size()>0){
                    mem.remove(mem.size()-1);
                    visit[i]=false;
                    }
                    }
                }
            }
            if(deep>num.length)
                return;
        }
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
         int[] a={1,2,3};
         System.out.print(permute(a));
        }
    
    }
  • 相关阅读:
    set命令_Linux
    AngularJS的date 过滤器
    JMeter环境介绍
    JMeter测试计划要素
    HTTP协议的压缩及URL Encode
    fiddler配置及使用教程
    Slenium常用方法
    Selenium八大定位
    CSS实现上下左右垂直居中
    SASS用法笔记
  • 原文地址:https://www.cnblogs.com/joannacode/p/4395875.html
Copyright © 2011-2022 走看看