y***i 发帖数: 414 | 1 public static List> getPerms(int[] num) {
if (num == null || num.length == 0) {
return null;
}
List> res = new ArrayList>();
List first = new ArrayList();
res.add(first);
for (int i = 0; i < num.length; i++) {
List> newRes = new ArrayList>();
for (int j = 0; j < res.size(); j++) {
List current = res.get(j);
for (int k = 0; k <= current.size(); k++) {
List item = new ArrayList(current);
item.add(k, num[i]);
newRes.add(item);
}
}
res = newRes;
}
return res;
}
这个是permutation 1, 在这基础上如何改? |
h*******e 发帖数: 1377 | 2 class Solution {
public:
vector > permuteUnique(vector &num) {
vector > vec;
sort(num.begin(), num.end());
do
{ vec.push_back(num);
}while(next_permutation(num.begin(), num.end()));
return vec;
}
};
昨天写的 I/II 都好用. |
y***i 发帖数: 414 | 3
大哥你这偷懒得厉害啊,直接用库函数了,面试肯定不让啊。
【在 h*******e 的大作中提到】 : class Solution { : public: : vector > permuteUnique(vector &num) { : vector > vec; : sort(num.begin(), num.end()); : do : { vec.push_back(num); : }while(next_permutation(num.begin(), num.end())); : return vec; : }
|
h*******e 发帖数: 1377 | 4 next permutation leetcode 里面也有阿,二分搜一下,swap一下,然后 reverse一下。
【在 y***i 的大作中提到】 : : 大哥你这偷懒得厉害啊,直接用库函数了,面试肯定不让啊。
|
y***i 发帖数: 414 | 5
下。
能不能通过先排序的方法,具体怎么做想不出
【在 h*******e 的大作中提到】 : next permutation leetcode 里面也有阿,二分搜一下,swap一下,然后 reverse一下。
|
s***k 发帖数: 50 | |
D****3 发帖数: 611 | 7
注意节操 哈哈哈哈哈
【在 s***k 的大作中提到】 : std::next_permutation()
|