zoukankan      html  css  js  c++  java
  • [LeetCode] 46. Permutations Java

    题目:

     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]
    ]

    题意及分析:给出一组没有重复元素的数字,记做nums,要求求出所有可能的序列。做了好几道回溯的题目,终于有点懂了。对于回溯的题目,(1)首先要找到回溯结束的条件,我们用一个arraylist保存可能出现的序列,那么在这里的结束条件就是arraylist的长度等于 nums.length,(2)然后查找回溯进入下一层的条件,对于这道题每一次回溯来说,边界条件为 当前数组中还有数字没有加入进arraylist中,那么就进行下一层的运算。看下面的代码就明白了。

    代码:

    public class Solution {
        public List<List<Integer>> permute(int[] nums) {
    		List<List<Integer>> list=new ArrayList<>();
    		List<Integer> array=new ArrayList<>();
    		
    		
    		int n=nums.length;
    		backtracking(list, array, 0, n, nums);
    		return list;
        }
    	
    	public void backtracking(List<List<Integer>> list,List<Integer> array,int t,int n,int[] nums) {
    		if(t>n) return;
    		else if(t==n){
    			list.add(new ArrayList<>(array));
    		}else{
    			for(int i=0;i<n;i++){
    				if((!array.contains(nums[i]))){
    					array.add(nums[i]);
    					backtracking(list, array, t+1, n, nums);
    					array.remove(array.size()-1);
    				}
    			}
    		}
    	}
    }
    

      

  • 相关阅读:
    scrapy 常用代码
    pycahrm 基础设置
    pycahrm 激活
    pycharm 常用快捷键
    platform 系统是windows还是liunx
    (14)awk布尔值、比较和逻辑运算
    (13)gawk支持的正则表达式
    (12)awk数据类型和字面量
    (11)细说awk中的变量和变量赋值
    (10)print、printf、sprintf和重定向
  • 原文地址:https://www.cnblogs.com/271934Liao/p/6949848.html
Copyright © 2011-2022 走看看