[leetcode]46

这道题,昨晚刚看完排列,然后今天早上就随机挑到这道题,借助昨晚的递归的排列,修改下就可以被accept.
看到有暴力破解的解法,有回溯.非递归解法

class Solution {
public:
    vector<vector<int>> re;
    void helper(vector<int>& v, int k, int m)
    {

        if (k == m)
        {
            vector<int> temp;
            for (int i = 0; i <= m; i++)
            {
                temp.push_back(v[i]);
            }
            re.push_back(temp);
        }
        else
        {
            for (int i = k; i <= m; i++)
            {
                swap(v[k], v[i]);
                helper(v, k + 1, m);
                swap(v[k], v[i]);
            }
        }

    }
    vector<vector<int>> permute(vector<int>& nums) {
        int size = nums.size();
        helper(nums, 0, size-1);
        return re;
    }
};
Runtime: 12 ms, faster than 66.95% of C++ online submissions for Permutations.
Memory Usage: 9.8 MB, less than 23.88% of C++ online submissions for Permutations.

猜你喜欢

转载自www.cnblogs.com/tailiang/p/11717941.html
今日推荐