LeetCode 题解(106): Permutations
来源:互联网 发布:中国沿海湿地保护网络 编辑:程序博客网 时间:2024/05/24 04:23
题目:
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]
.
典型的Backtracing or Depth First Search。要注意Java和Python的传引用与C++的不同。
C++版:
class Solution {public: vector<vector<int>> permute(vector<int>& nums) { vector<vector<int>> results; if(nums.size() == 0) return results; vector<int> result; vector<bool> used(nums.size(), false); trace(results, result, used, nums); return results; } void trace(vector<vector<int>>& results, vector<int>& result, vector<bool>& used, vector<int>& nums) { if(result.size() == used.size()) { results.push_back(result); return; } for(int i = 0; i < nums.size(); i++) { if(!used[i]) { used[i] = true; result.push_back(nums[i]); trace(results, result, used, nums); result.pop_back(); used[i] = false; } } }};
Java版:
public class Solution { public List<List<Integer>> permute(int[] nums) { List<List<Integer>> results = new ArrayList<List<Integer>>(); if(nums.length == 0) return results; List<Integer> result = new ArrayList<>(); boolean[] used = new boolean[nums.length]; trace(results, result, used, nums); return results; } public void trace(List<List<Integer>> results, List<Integer> result, boolean[] used, int[] nums) { if(result.size() == nums.length) { List<Integer> local = new ArrayList<>(); local.addAll(result); results.add(local); return; } for(int i = 0; i < nums.length; i++) { if(!used[i]) { used[i] = true; result.add(nums[i]); trace(results, result, used, nums); result.remove(result.size()-1); used[i] = false; } } }}
Python版:
class Solution: # @param {integer[]} nums # @return {integer[][]} def permute(self, nums): if len(nums) == 0: return [] used = [False for i in range(len(nums))] results = [] result = [] def trace(results, result, used, nums): if len(result) == len(nums): temp = result[:] results.append(temp) return for i in range(len(nums)): if not used[i]: used[i] = True result.append(nums[i]) trace(results, result, used, nums) result.pop() used[i] = False trace(results, result, used, nums) return results
0 0
- LeetCode 题解(106): Permutations
- LeetCode 题解(107): Permutations II
- LeetCode题解:Permutations
- LeetCode题解——permutations
- LeetCode题解–46. Permutations
- LeetCode题解:Permutations I and II
- LeetCode 106 Permutations II
- LeetCode(46)Permutations
- leetcode系列(55)Permutations, Permutations II
- LeetCode | Permutations(全排列)
- LeetCode(47)Permutations II
- LeetCode 46. Permutations(排列)
- 【LeetCode】Permutations && Permutations II
- leetcode: Permutations/Permutations II
- leetcode Permutations & Permutations II
- [Leetcode]Permutations && Permutations II
- LeetCode: Permutations
- LeetCode: Permutations
- Jquery分步指引给件
- Codeforces Round #292 (Div. 2) -- A. Drazil and Date
- 类和结构体一
- 梯度下降与逻辑回归
- SecureCRT连接Linux显示Mysql记录中文乱码
- LeetCode 题解(106): Permutations
- oracle用户创建及权限设置
- LDAP概念和原理
- UIStepper
- 3D_HTML5 3D元素周期表
- 九度OJ-题目1214:丑数
- java远程调.net webservice例子
- LeetCode_25---Reverse Nodes in k-Group
- 让Git 更好的配置