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

    题目描述

      给定一个没有重复数字的序列,返回其所有可能的全排列。

      示例:

      输入: [1,2,3]
      输出:
      [
        [1,2,3],
        [1,3,2],
        [2,1,3],
        [2,3,1],
        [3,1,2],
        [3,2,1]
      ]

    题解:

    public class L46 {
        public static List<List<Integer>> permute(int[] nums) {
            List<Integer> list = new ArrayList<>();
            for(int index =0;index<nums.length;index++){
                list.add(nums[index]);
            }
            List<List<Integer>> resList = new ArrayList<>();
            List<Integer> res = new ArrayList<>();
            backList(list,resList,res,nums.length);
            return resList;
        }
        public static void backList(List<Integer> list, List<List<Integer>> resList, List<Integer> res, Integer in){
            if(res.size() == in){
                resList.add(new ArrayList<>(res));
                return;
            }
            for(Integer li : list){
                res.add(li);
                //相当于状态重置的作用。或者使用一个列表用来表示哪些数据已经使用
                List temp = new ArrayList<>(list);
                temp.remove(li);
                backList(temp,resList,res,in);
                temp = null;
                res.remove(li);
            }
        }
    
        public static void main(String[] args) {
            int nums[]={1,3,5};
            List<List<Integer>> list = permute(nums);
        }
    }
  • 相关阅读:
    消除共模干扰的方法
    C#模拟键盘事件
    获取本地IP V4 出现::1
    生成ssh密钥
    苹果应用商店DNS修改加快下载速度
    模算术 modular arithmetic
    有限域和质数的幂
    rere
    test
    图信号处理进行大数据分析
  • 原文地址:https://www.cnblogs.com/mayang2465/p/11897069.html
Copyright © 2011-2022 走看看