• 46. Permutations **


    description:

    Given a collection of distinct integers, return all possible permutations.
    Note:

    You can assume that you can always reach the last index.

    Example:

    Example:
    
    Input: [1,2,3]
    Output:
    [
      [1,2,3],
      [1,3,2],
      [2,1,3],
      [2,3,1],
      [3,1,2],
      [3,2,1]
    ]
    
    

    answer:

    class Solution {
    public:
        vector<vector<int>> permute(vector<int>& num) {
            if (num.empty()) return vector<vector<int>>(1, vector<int>());
            vector<vector<int>> res;
            int first = num[0];
            num.erase(num.begin());
            vector<vector<int>> words = permute(num);
            for (auto &a :words) {
                for (int i = 0; i <= a.size(); ++i) { // 这里,一定是 <= !!! 不是 < ....
                    a.insert(a.begin() + i, first);
                    res.push_back(a);
                    a.erase(a.begin() + i);
                }
            }
            return res;
        }
    };
    

    relative point get√:

    hint :

    https://www.cnblogs.com/grandyang/p/4606334.html

    当n=1时,数组中只有一个数a1,其全排列只有一种,即为a1

    当n=2时,数组中此时有a1a2,其全排列有两种,a1a2和a2a1,那么此时我们考虑和上面那种情况的关系,我们发现,其实就是在a1的前后两个位置分别加入了a2

    当n=3时,数组中有a1a2a3,此时全排列有六种,分别为a1a2a3, a1a3a2, a2a1a3, a2a3a1, a3a1a2, 和 a3a2a1。那么根据上面的结论,实际上是在a1a2和a2a1的基础上在不同的位置上加入a3而得到的。

    _ a1 _ a2 _ : a3a1a2, a1a3a2, a1a2a3

    _ a2 _ a1 _ : a3a2a1, a2a3a1, a2a1a3

  • 相关阅读:
    C 扩展库
    访问nginx时验证密码
    关于redis闪退的案例
    查看进程的准确启动时间
    Ansible随笔8
    Ansible-随笔-7
    运维基本工作
    随笔-ansible-6
    随笔-ansible-5
    随笔-ansible-4
  • 原文地址:https://www.cnblogs.com/forPrometheus-jun/p/11205786.html
Copyright © 2020-2023  润新知