90. 子集 II
回溯嘛
子集啊排列组合啊棋盘啊都是回溯
回溯三部曲走起
跟78.子集比,本题给出的数组里存在重复元素了
所以在取元素时,如果同一层里取过某个元素,那么在该层就不能取重复的该元素了
如给出的数组[1,2,2]
可以在某一次递归中第一个取2放进子集,但后面的递归就不允许第一个取2放进子集里了
详情可以看代码随想录的图
代码随想录
所以要有一个数组used记录该层里取过的数
本题中,要判断取的nums[i]有没有使用过
如果没有,那么在backtracking要传入used数组,所以要递归前标记nums[i]已经被使用过了而递归后,需要回溯,从path中删除nums[i],所以要恢复为nums[i]未被使用
整理一下,得到最终代码:
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。