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

本文共 1858 字,大约阅读时间需要 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 };

 

转载地址:http://hibnm.baihongyu.com/

你可能感兴趣的文章
如何监控MYSQL消耗服务器资源
查看>>
[GEiv]第七章:着色器 高效GPU渲染方案
查看>>
android 国内sdk下载地址及代理, android 环境搭建
查看>>
关于C++中的友元
查看>>
Javascript实现的2048
查看>>
各种HTTPS站点的SSL证书 ,扩展SSL证书,密钥交换和身份验证机制汇总
查看>>
IOS UI总结
查看>>
【歪谈】重构浪漫:未来属于浪漫的80后
查看>>
还在抱怨JS文件里没有智能提示吗, VS10以及以上都可以 .NET
查看>>
如何生成IStyleGalleryItem和ISymbol对象的预览图(转载)
查看>>
数组插件----linq.js
查看>>
EF多表查询方式
查看>>
eclipse上传显示svn上传者名
查看>>
rsyslog日志服务的配置文件分析
查看>>
PCA降纬一步一步
查看>>
Swift3.0语言教程字符串大小写转化
查看>>
常用牛人主页链接(计算机视觉、模式识别、机器学习相关方向,陆续更新。。。。)...
查看>>
php composer 安装
查看>>
【30集iCore3_ADP出厂源代码(ARM部分)讲解视频】30-3 底层驱动之LED_蜂鸣器
查看>>
Netty 实现聊天功能
查看>>