Lintcode_16 Permutations II
来源:互联网 发布:java 退出程序 编辑:程序博客网 时间:2024/06/11 22:50
Given a list of numbers with duplicate number in it. Find all unique permutations.
Example
For numbers [1,2,2]
the unique permutations are:
[ [1,2,2], [2,1,2], [2,2,1]]
class Solution {public: /** * @param nums: A list of integers. * @return: A list of unique permutations. */ vector<vector<int> > permuteUnique(vector<int> &nums) { // write your code here vector<vector<int>> res; if (nums.size() == 0) { return res; } unordered_set<string> set; queue<pair<vector<int>, pair<vector<int>, string>>> que; for (int i = 0; i < nums.size(); i++) { int a = nums[i]; string s; stringstream ss; ss << a; ss >> s; if (set.find(s) == set.end()) { set.insert(s); nums.erase(nums.begin() + i); pair<vector<int>, string> p = make_pair(nums, s); vector<int> temp = {a}; que.push(make_pair(temp, p)); nums.insert(nums.begin() + i, a); } } while (!que.empty()) { vector<int> target = que.front().first; vector<int> rest = que.front().second.first; string s_target = que.front().second.second; que.pop(); if (target.size() == nums.size()) { res.push_back(target); continue; } int len = rest.size(); for (int i = 0; i < len; i++) { int a = rest[i]; string s; stringstream ss; ss << a; ss >> s; if (set.find(s_target + "_" + s) == set.end()) { set.insert(s_target + "_" + s); target.push_back(a); rest.erase(rest.begin() + i); pair<vector<int>, string> p = make_pair(rest, s_target + "_" + s); que.push(make_pair(target, p)); target.erase(target.begin() + target.size() - 1); rest.insert(rest.begin() + i, a); } } } return res; }};
0 0
- Lintcode_16 Permutations II
- 【LeetCode】Permutations && Permutations II
- leetcode: Permutations/Permutations II
- leetcode Permutations & Permutations II
- [Leetcode]Permutations && Permutations II
- Permutations and Permutations II
- Permutations && Permutations ii
- Permutations II
- Permutations II
- Permutations II
- Permutations II
- Permutations II
- Permutations II
- Permutations II
- Permutations II
- Permutations II
- Permutations II
- Permutations II
- CodeForces 160D Edges in MST 题解
- 享元模式 详解
- Lintcode_11 Search Range in Binary Search Tree
- 矩阵乘法的经典题目_源自Matrix67_
- 获取APK签名sha1值
- Lintcode_16 Permutations II
- The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
- Lintcode_18 Subsets II
- C# 怎样将DateTime类型进行日期的加减
- java学习总结(16.06.28)包装类和包装类的常用方法
- TP框架之多文件上传
- linux基础学习笔记-7-ssh服务,NFS服务,tftp服务
- 详解移位运算符-二进制中1的个数
- 1016