44
----------------------------------------------------------------分割线------------------------------------------------------------------------------------
46、Permutations
题目:
题目意思是给定n个不同的数,打印出所有的排列。
这一篇博客简单介绍了如何使用STL生成数组的全排列,代码如下:
1 class Solution { 2 public: 3 vector> permute(vector & nums) { 4 vector > ret; 5 6 if (nums.empty()) 7 return ret; 8 9 sort(nums.begin(), nums.end());10 ret.push_back(nums);11 while (next_permutation(nums.begin(), nums.end()))12 ret.push_back(nums);13 14 return ret;15 }16 };
为了提升自己的算法能力,当然不能只会使用STL,而是需要理解其怎样实现这个算法,并且动手自己写出来,这样对自己的能力才会有很大的提升。
---------------------------------------------------------------分割线----------------------------------------------------------------------
47、Permutations II
这一题和46题的区别就是数组中的数可能有相同的数。其实方法都和46题一样,代码如下:
1 class Solution { 2 public: 3 vector> permuteUnique(vector & nums) { 4 vector > ret; 5 6 if (nums.empty()) 7 return ret; 8 9 sort(nums.begin(), nums.end());10 ret.push_back(nums);11 while (next_permutation(nums.begin(), nums.end()))12 ret.push_back(nums);13 14 return ret;15 }16 };