• Leetcode题解(十六)


    44

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

    46、Permutations

    题目:

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

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

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

     1 class Solution {
     2 public:
     3     vector<vector<int>> permute(vector<int>& nums) {
     4         vector<vector<int> > 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<vector<int>> permuteUnique(vector<int>& nums) {
     4         vector<vector<int> > 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 };
  • 相关阅读:
    第四章5
    第四章4
    第四章3
    第四章2
    第四章1
    第四章例4-8
    第四章例4-7
    第四章例4-6
    第四章例4-5
    第四章例4-4
  • 原文地址:https://www.cnblogs.com/LCCRNblog/p/5148639.html
Copyright © 2020-2023  润新知