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

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

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

    leetcode 第46题 解题思路

    这也是一个递归问题。对于数组中的每个元素,它的全排列就等于它本身加上除它以外所有的全排。所以只要这样依次计算全排列就行.

    class Solution {
    
        List<List<Integer>> res = new ArrayList<>();
        boolean[] used = null;
    
        public List<List<Integer>> permuteUnique(int[] nums) {
            res.clear();
            if(nums.length==0) return res;
            used = new boolean[nums.length];
            permuteAux(nums,0, new ArrayList<>());
            return res;
        }
    
        private void permuteAux(int[] nums,int index,List<Integer> st) {
            if(index == nums.length){
    
                List<Integer> t = new ArrayList<>(st);
                res.add(t);
                return;
            }
    
            for(int i=0;i<nums.length;i++){
                if(used[i]) continue;
                st.add(nums[i]);
                used[i] = true;
                permuteAux(nums,index+1,st);
                used[i] = false;
                st.remove(st.size()-1);
    
            }
    
            return;
        }
    }
  • 相关阅读:
    国内好用的maven仓库,添加到本地nexus中
    02 介绍
    11 jsp脚本调用java代码
    12 jsp page 指令
    14 javaBean 组件
    13 jsp include
    01 Servlet & Jsp 技术概述
    pl/sql 实例精解 05
    pl/sql 实例精解 06
    pl/sql 实例精解 08
  • 原文地址:https://www.cnblogs.com/kpwong/p/14649663.html
Copyright © 2011-2022 走看看