本文主要是介绍Leetcode94: Permutations,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Given a collection of 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]
, and [3,2,1]
.
解题思路:字符交换加dfs。
将第0个字符和从第0开始的每个字符进行交换,对于交换后的结果,再从第1个字符开始交换。一直到最后一个字符。
class Solution {
public:void dfs(vector<vector<int> >& ret, vector<int>& num, int cur) { if(num.size() == cur) { ret.push_back(num); } else { for(int i = cur; i < num.size(); ++i) { swap(num[cur], num[i]); dfs(ret, num, cur+1); swap(num[cur], num[i]); } } } vector<vector<int>> permute(vector<int>& nums) {vector<vector<int> > ret;dfs(ret, nums, 0);return ret;}
};
这篇关于Leetcode94: Permutations的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!