LeetCode No.46 Permutations

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]
]

====================================================================

题目链接:https://leetcode.com/problems/permutations/

题目大意:求出给定数组的全排列。

思路:通过深搜(DFS)实现。

1、visit记录访问过的数值

2、对nums中所有的值,如果没有在visit中,则将其放进visit中。

3、当visit的长度等于nums的长度时,即所有数值都被访问,则将visit放进结果ans中。

参考代码:

class Solution {
public:
    vector> permute(vector& nums) {
        int n = nums.size() ;
        vector < vector  > ans ;
        if ( n == 0 )
            return ans ;
        sort ( nums.begin() , nums.end() ) ;
        vector  visit ;
        dfs ( nums , visit , ans ) ;
        return ans ;
    }
    
private :
    void dfs ( vector & nums , vector & visit , vector  >& ans )
    {
        if ( visit.size() == nums.size() ) 
        {
            ans.push_back ( visit ) ;
            return ;
        }
        for ( int i = 0 ; i < nums.size() ; i ++ )
        {
            if ( find ( visit.begin() , visit.end() , nums[i] ) == visit.end() )
            {
                visit.push_back ( nums[i] ) ;
                dfs ( nums , visit , ans ) ;
                visit.pop_back () ;
            }
        }
    }
};



你可能感兴趣的:(leetcode,dfs,leetcode,dfs)