本文主要是介绍**Leetcode 47. Permutations II,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
https://leetcode.com/problems/permutations-ii/description/
判重这里需要在注意
判重只加一行代码就行了。
道理很简单 比如1有3个,那么visit中 第一个1没访问过,就去用第二个1,这样其实就在构造重复解,
class Solution {
public:void dfs(vector<int>& nums, vector<int>visit, vector<int>tmp, vector< vector<int> > &ans ) {if (tmp.size() >= nums.size()) {ans.push_back(tmp);return;}for (int i = 0; i < nums.size(); i++) {if (!visit[i]) {if (i && nums[i] == nums[i-1] && !visit[i-1]) continue;visit[i] = 1;tmp.push_back(nums[i]);dfs(nums, visit, tmp, ans);tmp.pop_back( );visit[i] = 0;}}}vector<vector<int>> permuteUnique(vector<int>& nums) {vector< vector<int> > ans;sort(nums.begin(), nums.end());dfs(nums, vector<int>(nums.size(), 0), vector<int>(), ans);return ans;}
};
这篇关于**Leetcode 47. Permutations II的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!