博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode - 46. Permutations
阅读量:6182 次
发布时间:2019-06-21

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

46. Permutations 

 ----------------------------------------------------------------------------

Mean: 

给定一个数组,求这个数组的全排列.

analyse:

方法1:调用自带函数next_permutation(_BIter,_BIter)

方法2:自己手写一个permutation函数,很简单.

Time complexity: O(N)

 

view code

#include <bits/stdc++.h>
using
namespace
std;
// way 1: use system's function:next_permutation(iter* begin,iter* end);
//class Solution
//{
//public:
//    vector<vector<int>> permute(vector<int>& nums)
//    {
//        vector<vector<int>> res;
//        sort(nums.begin(),nums.end());
//        res.push_back(nums);
//        while(next_permutation(nums.begin(),nums.end()))
//            res.push_back(nums);
//        return res;
//    }
//};
class
Solution
{
public
:
   
vector
<
vector
<
int
>>
permute(
vector
<
int
>
nums)
   
{
       
vector
<
vector
<
int
>>
res;
       
solvePermute(
res
,
nums
,
0);
       
return
res;
   
}
   
   
void
solvePermute(
vector
<
vector
<
int
>>&
res
,
vector
<
int
>
nums
,
int
begin)
   
{
       
if(
begin
>=
nums
.
size())
       
{
           
res
.
push_back(
nums);
           
return;
       
}
       
for(
int
i
=
begin;
i
<
nums
.
size();
++
i)
       
{
           
swap(
nums
[
i
],
nums
[
begin
]);
           
solvePermute(
res
,
nums
,
begin
+
1);
           
swap(
nums
[
i
],
nums
[
begin
]);
       
}
   
}
};
int
main()
{
   
int n;
   
while(
cin
>>n)
   
{
       
vector
<
int
>
ve(n);
       
for(
int
i
=
0;
i
<n;
++
i)
           
cin
>>
ve
[
i
];
       
Solution
solution;
       
vector
<
vector
<
int
>>
ans
=
solution
.
permute(
ve);
       
for(
auto
p1:
ans)
       
{
           
for(
auto
p2:
p1)
           
{
               
cout
<<
p2
<<
" ";
           
}
           
cout
<<
endl;
       
}
   
}
   
return
0;
}

转载于:https://www.cnblogs.com/crazyacking/p/5255205.html

你可能感兴趣的文章
从问题出发看JAVA编程规范
查看>>
【译】Swift算法俱乐部-快速排序
查看>>
150年前,他对拿破仑做数据可视化
查看>>
Kafka走查
查看>>
Ribbon 框架简介及搭建
查看>>
Vue 模板编程实践 之 巧用过滤器
查看>>
Node.js 服务器
查看>>
小议JS原型链、继承
查看>>
对比几段代码,看看你是 Python 菜鸟还是老鸟
查看>>
在Ubuntu 16.04 / 17.10 / 18.04上安装Oracle Java JDK 11
查看>>
算法-无重复字符的最长子串
查看>>
直播、短视频平台如何选择合适的CDN?
查看>>
GO GC 垃圾回收机制
查看>>
高德地图上展示终端信息
查看>>
区块链学堂——公有链、私有链、联盟链、侧链、互联链
查看>>
恕我直言,你可能误解了微服务
查看>>
web前端性能优化总结
查看>>
玩转小程序转发——小程序探索
查看>>
【基础】小程序实现聊天气泡样式
查看>>
Docker入门(三)使用Docker Compose
查看>>