博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Permutations II (重重重)
阅读量:4107 次
发布时间:2019-05-25

本文共 983 字,大约阅读时间需要 3 分钟。

题目:

解答:

 和上一题一样思路,多加一个剪枝,剪枝的方法是,当和后面的数进行交换时,如果在前面交换过相同的数,那么这个数就不需要进行交换了。

参考:

http://blog.csdn.net/xx77009833/article/details/17843415

http://www.cnblogs.com/TenosDoIt/p/3662644.html

代码:

class Solution {  public:	  vector
> permuteUnique(vector
&num) { int size = num.size(); vector
> res; per(num, res, 0); return res; } private: void per(vector
&num, vector
> &res, int k) { if (k == num.size()) { if (find(res.begin(), res.end(), num) == res.end()) res.push_back(num); } for (int i = k; i < num.size(); i++) { if (findD(num, k, i, num[i])) continue; else { swap(num[k], num[i]); per(num, res, k + 1); swap(num[k], num[i]); } } } bool findD(vector
num, int start, int end, int target) { for (int i = start; i < end; i++) { if (num[i] == target) return true; } return false; } void swap(int &a, int &b) { int temp; temp = a; a = b; b = temp; } };

你可能感兴趣的文章
Step By Step(Lua数据结构)
查看>>
Step By Step(Lua编译执行与错误)
查看>>
Step By Step(Lua迭代器和泛型for)
查看>>
Step By Step(Lua函数)
查看>>
Step By Step(Lua表达式和语句)
查看>>
Step By Step(Lua基础知识)
查看>>
Step By Step(Lua开篇)
查看>>
Step By Step(编写C函数的技巧)
查看>>
Step By Step(userdata)
查看>>
lua学习:把lua文本文件“编译”成二进制的文本
查看>>
Lua编译器
查看>>
Lua解释器
查看>>
Notepad++ 16进制编辑功能
查看>>
N沟道增强型MOS管双向低频开关电路
查看>>
VS2010点滴——不能将参数 1 从“const char [11]”转换为“LPCWSTR”
查看>>
error C2065: “CString”: 未声明的标识符
查看>>
Building MFC application with /MD[d] (CRT dll version)requires MFC shared dll version~~~~
查看>>
error C2668: “pow”: 对重载函数的调用不明确
查看>>
详解C语言字节对齐
查看>>
Long Long、__int64使用总结
查看>>