首页 > 代码库 > leetcode Permutations II
leetcode Permutations II
题目:和上一题一样,就是这时候给定的数字可能有重复。
做法:只要将num排好序,然后判断如果当前的值等于前一个的话,那么就跳过,就不会有重复的人。果然是AC了。
1 class Solution { 2 public: 3 vector<vector<int> > permuteUnique(vector<int> &num) 4 { 5 vector<vector<int> > ans; 6 if (num.size() == 1) 7 {ans.push_back(num);return ans;} 8 9 vector<vector<int> > post;10 vector<int> tmp;11 vector<int> cur;12 sort(num.begin(), num.end()); // 排好序13 for (int i = 0; i < num.size(); ++i)14 {15 tmp = num;16 if (i - 1 >= 0 && tmp[i] == tmp[i - 1]) continue; //如果重复数字就跳过17 tmp.erase(tmp.begin() + i);18 post = permuteUnique(tmp);19 for (int j = 0; j < post.size(); ++j)20 {21 cur = post[j];22 cur.insert(cur.begin(), num[i]);23 ans.push_back(cur);24 }25 }26 return ans; 27 }28 };
这个人的也是递归。这个人的好几种。有时间了再好好看看。
leetcode Permutations II
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。