https://leetcode.cn/problems/subsets-ii/description/

上一题(78. 子集 )的基础上增加了树层去重,其余没有变化

vector<vector<int>> ans;
vector<int> path;

void backtracking(int startIndex, vector<int>& nums) {
	ans.push_back(path);

	for (int i = startIndex; i < nums.size(); ++i) {
			path.push_back(nums[i]);
			backtracking(i + 1, nums);
			path.pop_back();
			// 树层去重
			while (i + 1 < nums.size() && nums[i + 1] == nums[i])
					++i;
	}
}

vector<vector<int>> subsetsWithDup(vector<int>& nums) {
		std::sort(nums.begin(), nums.end());
		backtracking(0, nums);
		return ans;
}