专门做推广的网站吗,短网址还原,公司网站的推广方案,广州网营广告有限公司思路分析#xff1a; 成员变量#xff1a; result: 用于存储最终的子集结果。path: 用于存储当前正在构建的子集。 DFS函数#xff1a; dfs(vectorint nums, int start): 递归地生成子集。 从给定的start索引开始遍历数组。如果当前元素与前一个元素相同#…
思路分析 成员变量 result: 用于存储最终的子集结果。path: 用于存储当前正在构建的子集。 DFS函数 dfs(vectorint nums, int start): 递归地生成子集。 从给定的start索引开始遍历数组。如果当前元素与前一个元素相同处理重复元素则跳过以避免产生重复的子集。将当前元素加入path中然后将path加入result中。递归调用DFS更新start为下一个不同的元素的索引。回溯移除path的最后一个元素以便探索其他可能性。 主函数 subsetsWithDup 对输入数组nums进行排序以确保相同元素相邻。初始化result为一个空集。调用DFS开始生成子集初始索引为0。返回最终的子集结果 result。
class Solution {vectorvectorint result; // 存储最终的子集结果vectorint path; // 存储当前正在构建的子集// 深度优先搜索DFS函数用于生成子集void dfs(vectorint nums, int start) {for (int i start; i nums.size(); i) {// 跳过重复元素以避免产生重复的子集if (i ! start nums[i] nums[i - 1])continue;// 将当前元素加入子集path.push_back(nums[i]);// 将当前子集加入结果result.push_back(path);// 递归调用DFS更新起始索引为下一个不同元素的位置dfs(nums, i 1);// 回溯移除最后一个元素以便探索其他可能性path.pop_back();}return;}public:vectorvectorint subsetsWithDup(vectorint nums) {// 对输入数组进行排序以处理重复元素sort(nums.begin(), nums.end());// 初始化结果为一个空子集result.push_back({});// 调用DFS开始生成子集初始索引为0dfs(nums, 0);// 返回最终的子集结果 resultreturn result;}
};