[LeetCode]46. Permutations

来源:互联网 发布:安庆2017网络效应答案 编辑:程序博客网 时间:2024/06/07 05:45

Description:

Given a collection of distinct numbers, return all possible permutations.

For example,
[1,2,3] have the following permutations:

[  [1,2,3],  [1,3,2],  [2,1,3],  [2,3,1],  [3,1,2],  [3,2,1]]
———————————————————————————————————————————————————

Solution:

题意:找出给定数组的所有置换序列。

思路:回溯。

class Solution {public:    vector<vector<int>> permute(vector<int>& nums) {        vector<vector<int>> result;        backTracking(result, 0, nums);        return result;    }    void backTracking(vector<vector<int>>& result, int begin, vector<int>& nums) {        if (begin >= nums.size()) {            result.push_back(nums);            return;        }        // 将nums[begin](头元素)与nums数组中每一个元素做交换        // 从nums.size() - 1(尾元素)开始交换,一直回溯到头        // 回溯前后两次swap将所有可能走一遍,防止跳过没有出现过的情况        for (int i = begin; i < nums.size(); i++) {            swap(nums[begin], nums[i]);            backTracking(result, begin + 1, nums);            swap(nums[begin], nums[i]);        }    }};


原创粉丝点击