博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LintCode] 全排列
阅读量:5994 次
发布时间:2019-06-20

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

递归实现:

class Solution {public:    /**     * @param nums: A list of integers.     * @return: A list of permutations.     */    vector
> permute(vector
nums) { // write your code here vector
> permutations; if (nums.empty()) return permutations; permutate(nums, 0, permutations); return permutations; }private: void permutate(vector
nums, int start, vector
>& permutations) { if (start == nums.size()) { permutations.push_back(nums); return; } for (int i = start; i < (int)nums.size(); i++) { swap(nums[start], nums[i]); permutate(nums, start + 1, permutations); } }};

非递归实现(基于nextPermutation):

1 class Solution { 2 public: 3     /** 4      * @param nums: A list of integers. 5      * @return: A list of permutations. 6      */ 7     vector
> permute(vector
nums) { 8 // write your code here 9 vector
> permutations;10 if (nums.empty()) return permutations;11 vector
copy(nums.begin(), nums.end());12 nextPermutation(nums);13 permutations.push_back(nums);14 while (nums != copy) {15 nextPermutation(nums);16 permutations.push_back(nums);17 }18 return permutations;19 }20 private:21 void nextPermutation(vector
& nums) {22 int k = -1, n = nums.size();23 for (int i = n - 2; i >= 0; i--) {24 if (nums[i] < nums[i + 1]) {25 k = i;26 break;27 }28 }29 if (k == -1) {30 reverse(nums.begin(), nums.end());31 return;32 }33 int l;34 for (int i = n - 1; i > k; i--) {35 if (nums[i] > nums[k]) {36 l = i;37 break;38 }39 }40 swap(nums[l], nums[k]);41 reverse(nums.begin() + k + 1, nums.end());42 }43 };

 

转载于:https://www.cnblogs.com/jcliBlogger/p/4625828.html

你可能感兴趣的文章
Oracle学习1--阿里云ECS上部署单实例数据库11.2.0.4
查看>>
svnserve:error while loading shared libraries:/usr/local/lib/libsvn_fs-1.so.0:cannot restore
查看>>
Amoeba-mysql主从+读写分离实战+测试+排错
查看>>
数据库日志系统分解
查看>>
阿里云获得国内首个SAP NetWeaver 公共云平台认证
查看>>
liunx下设置网卡为混杂模式的命令
查看>>
XML语法
查看>>
heartbeat 裂脑的概念及原理
查看>>
H3C无线控制器portal支持https重定向的经验汇总
查看>>
网站统计代码
查看>>
在centos安装ncftp
查看>>
搭建Office 2010 KMS服务器
查看>>
ntbackup操作失败
查看>>
LINUX下安装HPL/SQL
查看>>
python 相见恨晚的itertools库
查看>>
vSphere client连接vCenter server时需开放的端口
查看>>
opennms安装心得
查看>>
安装centos 7的时候出现An Unknown Error Has Occurred
查看>>
使用 NGINX 流控和 fail2ban 防止 CC 攻击
查看>>
vim 使用
查看>>