Given a collection of numbers, return all possible permutations.
For example,
[1,2,3]
have the following permutations:
[1,2,3]
, [1,3,2]
, [2,1,3]
, [2,3,1]
, [3,1,2]
,
and [3,2,1]
.
全排列,從全體元素中挑一個,放在第一個位置。
在從剩下的元素中,放在第二個位置。
在從剩下的元素中,放在第三個位置。
。。。。。。
此算法,利用交換,將已經被選擇的元素交換到指定位置。右邊則是剩下待選的元素。
class Solution { public: vector> permute(vector &num) { vector > ans; helper(ans, 0, num); return ans; } void helper(vector > &ans, size_t start, vector &num) { if (start+1 >= num.size()) return ans.push_back(num); for (size_t i=start; i