class Solution {
private:
vector<vector<int> > res;
public:
vector<vector<int> > permute(vector<int> &num) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
res.clear();
run(0, num);
return res;
}
void run(int startIdx, vector<int> num)
{
if (startIdx == num.size())
{
res.push_back(num);
}
for (int i = startIdx; i < num.size(); ++i)
{
swap(num[startIdx], num[i]);
run(startIdx + 1, num);
swap(num[startIdx], num[i]);
}
}
void swap(int& a, int& b)
{
if (a == b)
return;
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
};