zoukankan      html  css  js  c++  java
  • 46. Permutations

    Given a collection of distinct 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],
      [3,2,1]
    ]
    本题采用回溯法,回溯法的特点是可以系统地搜索一个问题的所有解或者一个解,本问题是搜索所有解。回溯法利用的是dfs方法解决,回溯法有个剪枝函数的说法,剪枝函数是除掉不符合条件的解。剪枝函数包括两个函数,一个是约束函数一个是限界函数,约束函数是指,在进行dfs的过程中除去不符合条件的当前解以及以当前解为根结点的子树,而限界函数指的是除去不符合最优解的解空间。本题中,不包含最优解的情况,约束函数是
    看链表中是否包含该数组元素,代码如下:
     1 public class Solution {
     2     public List<List<Integer>> permute(int[] nums) {
     3         List<List<Integer>> res = new ArrayList<>();
     4         backtracking(res,new ArrayList<Integer>(),nums);
     5         return res;
     6     }
     7     public void backtracking(List<List<Integer>> res,List<Integer> list,int[] nums){
     8         if(list.size()==nums.length){
     9             res.add(new ArrayList<Integer>(list));
    10         }else{
    11             for(int i=0;i<nums.length;i++){
    12                 if(list.contains(nums[i])) continue;
    13                 list.add(nums[i]);
    14                 backtracking(res,list,nums);
    15                 list.remove(list.size()-1);
    16             }
    17         }
    18     }
    19 }

     
  • 相关阅读:
    HTML 5 全局属性
    微软build 2015
    写个程序登陆58同城
    工厂方法
    简单工厂
    System.Data.SQLite兼容32位和64位问题
    利用Socket实现的两个程序的通信
    最近的工作总结
    Canvas路径、描边、填充
    HTML5阴影与渐变
  • 原文地址:https://www.cnblogs.com/codeskiller/p/6386364.html
Copyright © 2011-2022 走看看