46、47-Permutations
2017-12-15 21:16
190 查看
难度:medium
直接使用函数next_permutation(_vector.begin(), _vector.end())
47:
在46题的基础上,使用二层循环,对得到的全排列两两进行比较,删除重复的排列
47:
题目描述
46-Permutations I:
47-Permutations II:
算法分析
46:直接使用函数next_permutation(_vector.begin(), _vector.end())
47:
在46题的基础上,使用二层循环,对得到的全排列两两进行比较,删除重复的排列
代码实现
46:// use function next_permutation class Solution { public: vector<vector<int>> permute(vector<int>& nums) { vector<vector<int>> result; sort(nums.begin(), nums.begin()+nums.size()); do { result.push_back(nums); } while (next_permutation(nums.begin(), nums.begin() + nums.size())); return result; } };
47:
class Solution { public: vector<vector<int>> permuteUnique(vector<int>& nums) { vector<vector<int>> result; sort(nums.begin(), nums.begin()+nums.size()); do { result.push_back(nums); } while (next_permutation(nums.begin(), nums.begin() + nums.size())); int n = result.size(); for (int i = 0; i < result.size(); ++i) { for (int j = i + 1; j < result.size(); ++j) { if (isSame(result[i], result[j])) result.erase(result.begin() + j); } } return result; } bool isSame(vector<int> a, vector<int> b) { int n = a.size(); for (int i = 0; i < n; ++i) { if (a[i] != b[i]) return false; } return true; } };
相关文章推荐
- [LeetCode 46 & 47] Permutations I & II
- 46 permutations && 47 Permutation II
- Leetcode 46/47 Permutations, Permutations II
- 46(47). Permutations
- leetcode46/47-Permutations I/II(全排列问题)
- LeetCode 46/47. Permutations i, ii
- LeetCode46,47 Permutations, Permutations II
- leetcode-46、47 Permutations/II 数字的排列组合
- LeetCode 46 Permutations + LeetCode 47 Permutations II
- LeetCode 46: Permutations
- [leetcode 46] Permutations
- 46 Permutations(全排列Medium)
- leetcode 46 : Permutations
- leetcode 46: Permutations
- LeetCode 46 Permutations (全排列)
- Leetcod-46_Permutations-全排列秒解-【C++】
- 问题集锦(46-47)
- 《Effective C++》:条款46-条款47
- LeetCode39/40/22/77/17/78/51/46/47/79 10道 Backtracking**
- 46 Permutations