19.2.7 [LeetCode 46] Permutations

Given a collection of distinct integers, return all possible permutations.

Example:

Input: [1,2,3]
Output:
[
  [1,2,3],
  [1,3,2],
  [2,1,3],
  [2,3,1],
  [3,1,2],
  [3,2,1]
]

 1 class Solution {
 2 public:
 3     void build(vector<bool>visited, vector<int>nums, vector<vector<int>>&ans,vector<int>now) {
 4         int flag = false;
 5         int n = nums.size();
 6         for(int i=0;i<n;i++)
 7             if (!visited[i]) {
 8                 visited[i] = true;
 9                 now.push_back(nums[i]);
10                 build(visited, nums, ans, now);
11                 visited[i] = false;
12                 now.pop_back();
13                 flag = true;
14             }
15         if (!flag)ans.push_back(now);
16     }
17     vector<vector<int>> permute(vector<int>& nums) {
18         vector<bool>visited(nums.size(), false);
19         vector<vector<int>>ans;
20         build(visited, nums, ans, vector<int>());
21         return ans;
22     }
23 };

一开始的暴力方法↑ 不出所料很慢

换了一种也没好多少

 1 class Solution {
 2 public:
 3     vector<vector<int>> permute(vector<int>& nums) {
 4         vector<vector<int>>ans;
 5         ans.push_back(vector<int>(1, nums[0]));
 6         for (int i = 1; i < nums.size(); i++) {
 7             vector<vector<int>>tmp = ans;
 8             ans.clear();
 9             for (int j = 0; j < tmp.size(); j++) {
10                 vector<int>now = tmp[j];
11                 for (int k = 0; k <= now.size(); k++) {
12                     now.insert(now.begin() + k, nums[i]);
13                     ans.push_back(now);
14                     now.erase(now.begin() + k);
15                 }
16             }
17         }
18         return ans;
19     }
20 };

(算了算了

原文地址:https://www.cnblogs.com/yalphait/p/10354986.html

时间: 2024-08-04 03:28:19

19.2.7 [LeetCode 46] Permutations的相关文章

DFS解法的两道题 Leetcode 46 Permutations &amp; Leetcode 78 Subset

Leetcode 78 Subset Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset must be in non-descending order. The solution set must not contain duplicate subsets. For example,If S = [1,2,3], a solution is: [ [3], [1

leetCode 46. Permutations 回溯问题 | Medium

46. Permutations(全排列问题--回溯问题经典) 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] ] 题目大意:求一个序列的全排列. 思路:做排列

[Lintcode]15. Permutations/[Leetcode]46. Permutations

15. Permutations/46. Permutations 本题难度: Medium Topic: Search & Recursion Description Given a list of numbers, return all possible permutations. Example Example 1: Input: [1] Output: [ [1]] Example 2: Input: [1,2,3] Output: [ [1,2,3], [1,3,2], [2,1,3]

leetcode 46 Permutations Python 实现(回溯算法)

Given a collection of distinct integers, return all possible permutations. Example: Input: [1,2,3]Output:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]] 回溯算法自己的一个思路如下:需要保留数字使用情况,my_nums增加和删除元素等操作 1 class Solution: 2 def permute(self, nums: Li

LeetCode 46 Permutations(全排列问题)

题目链接:https://leetcode.com/problems/permutations/?tab=Description Problem:给出一个数组(数组中的元素均不相同),求出这个数组能够产生的所有全排列 采用递归算法,传入参数 List<List<Integer>> list, List<Integer> tempList, int[] nums, boolean[] used 其中list保存最终结果 tempList保存其中一个全排列 nums为最初的

LeetCode 46 Permutations (全排列)

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] ] 题目链接:https://leetcode.com/problems/permutations/ 题目大意:求全排列 题目分析:求

19.2.7 [LeetCode 47] Permutations II

Given a collection of numbers that might contain duplicates, return all possible unique permutations. Example: Input: [1,1,2] Output: [ [1,1,2], [1,2,1], [2,1,1] ] 1 class Solution { 2 public: 3 vector<vector<int>> permuteUnique(vector<int&

LeetCode 46. Permutations

原题 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] ] 解题思路 递归:递归的方法,创建一个visit判断此值是否已经添加过,每一层不断地循环,加入没有被访问的元素,直到最后结果的长

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] ] 给定一个数组,求所有的排列组合. 做出这道题很简单,主要是要比较快的速度,第一次做,耗时5ms,比较慢,主要就是用递归,每次向arr