Leetcode94: Permutations

2024-08-28 19:48
文章标签 leetcode94 permutations

本文主要是介绍Leetcode94: Permutations,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

解题思路:字符交换加dfs。
将第0个字符和从第0开始的每个字符进行交换,对于交换后的结果,再从第1个字符开始交换。一直到最后一个字符。

class Solution {
public:void dfs(vector<vector<int> >& ret, vector<int>& num, int cur)  {  if(num.size() == cur)  {  ret.push_back(num);  }  else  {  for(int i = cur; i < num.size(); ++i)  {  swap(num[cur], num[i]);  dfs(ret, num, cur+1);  swap(num[cur], num[i]);  }  }  }  vector<vector<int>> permute(vector<int>& nums) {vector<vector<int> > ret;dfs(ret, nums, 0);return ret;}
};


这篇关于Leetcode94: Permutations的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1115719

相关文章

LeetCode 46 Permutations + LeetCode 47 Permutations II

题意: 给出一串(46题)不重复or(47题)有重复的数字,要求输出所有排列。 思路: 有没有重复不影响思路 = =。 代码展示为46题提交结果,47题一样过…… 可以偷懒用next_permutation方法也可以自己实现,实现方法为从后往前找第一个出现的nums[i] < nums[i+1],从i后面找出比nums[i]稍大一点的数字nums[x],交换nums[i]和nums[

leetcode 刷题之路 12 Permutations

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]. 全排列问题,详细分析参考这篇文章

46. Permutations, 47. Permutations II

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] ] 无重复数

UVa 11077 Find the Permutations / 置换

把一个排列p变成1,2,...,n可以反过来看成1,2,...,n到p 把p分解乘循环 如果一个循环有n个元素 需要n-1次交换 dp[i][j] = dp[i-1][j] + dp[i-1][j-1] * (i-1); 代表i个元素 交换j次变成1,2,...,n,的种数 对于元素i 他可以自己成为一个循环那么交换次数不变 种数+1 就是 dp[i-1][j]

codeforces 463D Gargari and Permutations

题意: 从所给的序列中找出它们的最长公共子序列。 思路: DAG(有向无环图)+BFS。 如果数值 i 在所有序列中都在 j 前面。则i -> j连一条有向边。(好像还有个dp的思路的) 参考:http://www.cnblogs.com/hujunzheng/p/3947392.html AC代码: #include <cstdio>#include <cstring>#i

leetcode之全排列问题(Permutations)

在leetcode上,跟Permutations有关的题目: 31 Next Permutation46 Permutations 一.31 Next Permutation   31题是排列的入门题,给出[1,2,3,4],需给出下一排列[1,2,4,3]。这题有固定的解法,给定排序nums[n]=[1,4,2,7,6,5,3],n=0~6: 从序号6开始往前寻找第一对严格递减(即找到第

Codeforces #264 (Div. 2) D. Gargari and Permutations

Gargari got bored to play with the bishops and now, after solving the problem about them, he is trying to do math homework. In a math book he have foundk permutations. Each of them consists of number

LeetCode Permutations II

Given a collection of numbers that might contain duplicates, return all possible unique permutations. For example, [1,1,2] have the following unique permutations: [1,1,2], [1,2,1], and [2,1,1]. 题

uva 11077 - Find the Permutations(置换)

题目链接:uva 11077 - Find the Permutations 题目大意:给定一个1~n的排序,可以通过一系列的交换变成1,2,…,n, 给定n和k,统计有多少个排列至少需要交换k次才能变成有序的序列。 解题思路:给定一个序列P,可以将该序列看做是一个置换,从有序序列,开始,需要多少次回到有序序列。将P的循环分解,循环长度为1的需要0次,长度为2的需要1次,循环长度为n的需

Leetcode 046 Permutations

题目连接:Leetcode 046 Permutations 解题思路:用 Leetcode 031的方法,每次获取下一个序列。 class Solution {public:bool nextPermutation(vector<int>& nums) {int n = nums.size();int idx = n - 1;while (idx && nums[idx-1] >= nums