博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Leetcode] Permutations
阅读量:4668 次
发布时间:2019-06-09

本文共 1464 字,大约阅读时间需要 4 分钟。

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

 

与Next Permutation一样,n个元素的排列共有n!个,所以只要执行n!次next_permutation就行。

 

1 class Solution { 2 public: 3     bool nextPermutation(vector
&num) { 4 if (num.size() < 2) { 5 return false; 6 } 7 int i, k; 8 bool flag = true; 9 for (i = num.size() - 2; i >= 0; --i) {10 if (num[i] < num[i + 1]) {11 break;12 }13 }14 if (i < 0) {15 flag = false;16 }17 for (k = num.size() - 1; k > i; --k) {18 if (num[k] > num[i]) {19 break;20 }21 }22 swap(num[i], num[k]);23 reverse(num.begin() + i + 1, num.end());24 return flag;25 }26 27 long long getNum(int n) {28 long long res = 1;29 while (n > 0) {30 res *= n;31 n--;32 }33 return res;34 }35 36 vector
> permute(vector
&num) {37 vector
> res;38 res.push_back(num);39 long long n = getNum(num.size());40 while (--n) {41 nextPermutation(num);42 res.push_back(num);43 }44 return res;45 }46 };

 

转载于:https://www.cnblogs.com/easonliu/p/3632476.html

你可能感兴趣的文章
sql
查看>>
Android初学第55天
查看>>
css元素样式确定
查看>>
JPA EntityManager详解
查看>>
C# 关键字 virtual、override和new的用法
查看>>
Filter
查看>>
如果有多个虚拟机,手动启动哪个
查看>>
字符串参数传递与返回值(转)
查看>>
selenium 3.6.0 geckodriver的一次坑
查看>>
predis如何实现phpredis的pconnect方法
查看>>
杜教筛
查看>>
JavaScriptDom操作与高级应用(八)
查看>>
拜占庭将军问题
查看>>
Codeforces 1163A - Eating Soup
查看>>
vim使用小技巧
查看>>
AutoCAD ObjectARX和RealDWG的基本数据操作
查看>>
CSS的常见属性
查看>>
java ArrayList源码分析(转载)
查看>>
WIN10 64位 JDK的安装
查看>>
php : RBAC 基于角色的用户权限控制-表参考
查看>>