LeetCode 046 Permutations
来源:互联网 发布:zozoc软件 编辑:程序博客网 时间:2024/05/16 01:12
题目
Given a collection of 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]
, and [3,2,1]
.
1 基础的基础again,深度遍历的应用的,递归写法;
2 一开始的写法是如下的:
public class Solution { public ArrayList<ArrayList<Integer>> permute(int[] num) { ArrayList<ArrayList<Integer>> ans = new ArrayList<ArrayList<Integer>>(); ArrayList<Integer> temp = new ArrayList<Integer>(); int n = num.length; if(n==0){ return ans; } useme(ans,temp,num,n); return ans; } public void useme(ArrayList<ArrayList<Integer>> ans, ArrayList<Integer> temp,int [] num,int n){ if(temp.size()==n){ ans.add(new ArrayList<Integer>(temp)); return ; } for(int i=0;i<n;i++){ if(!temp.contains(num[i])){ temp.add(num[i]); useme(ans,temp,num,n); temp.remove(temp.size()-1); } } }}
3上面有个问题,就是temp.contains(num[i])这个函数其实是很费时间的,要把list当中都遍历一遍才知道,所以才考虑新的写法
4 把数组的内容导入到一个新的arraylist中去,这样每次增加删除都可以具体指定,不需要遍历检查是否出现过,时间大大减少了。
public class Solution { public ArrayList<ArrayList<Integer>> permute(int[] num) { ArrayList<ArrayList<Integer>> ans = new ArrayList<ArrayList<Integer>>(); ArrayList<Integer> done = new ArrayList<Integer>(); int n = num.length; if(n==0){ return ans; } ArrayList<Integer> former = new ArrayList<Integer>(); for(int i=0;i<n;i++){ former.add(num[i]); } useme(ans,done,former); return ans; } public void useme(ArrayList<ArrayList<Integer>> ans, ArrayList<Integer> done, ArrayList<Integer> former){ if(former.size()==0){ ans.add(new ArrayList<Integer>(done)); return ; } for(int i=0;i<former.size();i++){ int temp = former.remove(i); done.add(temp); useme(ans,done,former); done.remove(done.size()-1); former.add(i,temp); } }}
0 0
- LeetCode 046 Permutations
- LeetCode: Permutations II [046]
- LeetCode 046 Permutations
- LeetCode 046 Permutations
- leetcode 046 Permutations
- [LeetCode]046-Permutations
- LeetCode 046 Permutations
- leetcode 046 —— Permutations
- leetcode之路046 Permutations
- leetcode解题方案--046--Permutations
- 【LeetCode】Permutations && Permutations II
- leetcode: Permutations/Permutations II
- leetcode Permutations & Permutations II
- [Leetcode]Permutations && Permutations II
- LeetCode: Permutations
- LeetCode: Permutations
- [Leetcode] Permutations
- [LeetCode] Permutations
- zend studio 9 如何去除高光颜色啊
- 使用MATLAB的几个建议
- 网购海外代购真假?京东阿里之路
- php jquery ajax 无法传递POST值的问题(2)
- Saluton+ 1.0 你值得拥有!
- LeetCode 046 Permutations
- C# 3.0 介绍(三)
- android 调试错误及排查(不断更新)
- Android中用代码设置ImageView的src和background
- 华为机试历年试题【part3】
- Redis_php 学习
- OAuth的机制原理讲解及开发流程
- 搭上腾讯 京东给自己的估值上调96%
- 进程定点自杀