zoukankan      html  css  js  c++  java
  • leecode no.46 全排列

    package leecode;

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;

    /**
    * 46. 全排列
    *
    * 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
    *
    * @author Tang
    * @date 2021/12/8
    */
    public class Permute {

    List<List<Integer>> result = new ArrayList<>();

    int[] nums;

    /**
    * 回溯算法
    * 1.已选路径
    * 2.可选列表
    * 3.结束条件
    *
    * 循环遍历{
    * 递归之前做出选择
    * 执行递归()
    * 递归之后撤销选择
    * }
    *
    *
    * @param nums
    * @return
    */
    public List<List<Integer>> permute(int[] nums) {
    this.nums = nums;

    //已选列表
    List<Integer> hasChooseList = new ArrayList<>();
    track(hasChooseList);
    return result;
    }

    /**
    * 递归
    */
    private void track(List<Integer> hasChooseList) {
    //完成一次排列 更新结果
    if(hasChooseList.size() == nums.length) {
    Object[] array = hasChooseList.toArray();
    List list = Arrays.asList(Arrays.copyOf(array, array.length));
    result.add(list);
    return;
    }


    //找出nums中没有的元素
    for (int num : nums) {
    if(hasChooseList.contains(num)) {
    continue;
    }

    //递归之前做出选择 num
    hasChooseList.add(num);

    //执行递归
    track(hasChooseList);

    //递归之后撤销选择
    hasChooseList.remove((Integer) num);
    }


    }

    public static void main(String[] args) {

    }

    }
  • 相关阅读:
    Asp.net MVC3 Routing study
    Sharepoint 站点页面错误问题
    vc2010 学习笔记1
    UML类成员的困惑
    河道二维水流模拟高精度算法研究
    朱庆:真三维GIS技术进展
    map
    SIGGRAPH 2010: 一场视觉盛宴[转]
    新网站开张,欢迎大家
    获取其它进程内EDIT BOX内容的一种方法
  • 原文地址:https://www.cnblogs.com/ttaall/p/15662148.html
Copyright © 2011-2022 走看看