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 }

     
  • 相关阅读:
    08-JS中table隔行换色
    07-JS中 li 排序
    HTML DOM 事件
    JavaScript 事件
    jQuery事件函数
    JQuery与JS对象相互转换
    jQuery中的选择器
    jQuery实现放大镜特效
    java线程(2016-4-7)
    Java 线程的转换及状态
  • 原文地址:https://www.cnblogs.com/codeskiller/p/6386364.html
Copyright © 2011-2022 走看看