https://leetcode.com/problems/permutations/

Input: nums = [1,2,3]
Output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
void BT(int index, vector<vector<int>>& output, vector<int>& nums)
{
	if (index == nums.size())
	{
		output.emplace_back(nums);
		return;
	}
	else
	{
		for (int i = index; i < nums.size(); ++i)
		{
			std::swap(nums[i], nums[index]);
			BT(index + 1, output, nums);
			std::swap(nums[i], nums[index]);
		}
	}
}

class Solution {
public:
	vector<vector<int>> permute(vector<int>& nums) {
		vector<vector<int>> output;
		BT(0, output, nums);
		return output;
	}
};

Runtime: 4 ms, faster than 78.01% of C++ online submissions for Permutations.

Memory Usage: 7.7 MB, less than 80.11% of C++ online submissions for Permutations.