Leetcode题解(十六)

44

----------------------------------------------------------------分割线------------------------------------------------------------------------------------

46、Permutations

题目:

Leetcode题解(十六)

题目意思是给定n个不同的数,打印出所有的排列。

http://blog.csdn.net/fly_yr/article/details/48139165

这一篇博客简单介绍了如何使用STL生成数组的全排列,代码如下:

 class Solution {
public:
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int> > ret; if (nums.empty())
return ret; sort(nums.begin(), nums.end());
ret.push_back(nums);
while (next_permutation(nums.begin(), nums.end()))
ret.push_back(nums); return ret;
}
};

为了提升自己的算法能力,当然不能只会使用STL,而是需要理解其怎样实现这个算法,并且动手自己写出来,这样对自己的能力才会有很大的提升。

---------------------------------------------------------------分割线----------------------------------------------------------------------

47、Permutations II

这一题和46题的区别就是数组中的数可能有相同的数。其实方法都和46题一样,代码如下:

 class Solution {
public:
vector<vector<int>> permuteUnique(vector<int>& nums) {
vector<vector<int> > ret; if (nums.empty())
return ret; sort(nums.begin(), nums.end());
ret.push_back(nums);
while (next_permutation(nums.begin(), nums.end()))
ret.push_back(nums); return ret;
}
};
上一篇:QML Flipable、Flickable和状态与动画 下篇


下一篇:Oracle 有排序的分页SQL写法