网站打不开服务器错误建手机网站多少钱
news/
2025/9/23 23:12:46/
文章来源:
网站打不开服务器错误,建手机网站多少钱,甘南北京网站建设,相册网站怎么做给定一个数组 candidates 和一个目标数 target #xff0c;找出 candidates 中所有可以使数字和为 target 的组合。
candidates 中的每个数字在每个组合中只能使用一次。 说明#xff1a; 所有数字#xff08;包括目标数#xff09;都是正整数。解集不能包含重复的组合。 …给定一个数组 candidates 和一个目标数 target 找出 candidates 中所有可以使数字和为 target 的组合。
candidates 中的每个数字在每个组合中只能使用一次。 说明 所有数字包括目标数都是正整数。解集不能包含重复的组合。
示例 1: 输入: candidates [10,1,2,7,6,1,5], target 8, 所求解集为: 解题重点集合数组candidates有重复元素但还不能有重复的组合 解题思路
1.组合问题抽象为树结构
2.确定使用过的维度“使用过”在这个树形结构上是有两个维度的一个维度是同一树枝上使用过一个维度是同一树层上使用过
3.题目中元素在同一个组合内是可以重复的怎么重复都没事但两个组合不能相同。所以我们要去重的是同一树层上的“使用过”同一树枝上的都是一个组合里的元素不用去重。 // 回溯 - 组合求和
window.onload function () {const combinationSum (candidates[10,1,2,7,6,1,5], target8) {const res [],path[]candidates.sort((a,b)a-b)//使用used【i】标记当前迭代的状态是处在树层还是树枝let used new Array(candidates.length).fill(false)const backTracking (startIndex,sum) {if(sum target){res.push(Array.from(path))return}for(let i startIndex;i candidates.length;i){let currentNum candidates[i]if(currentNumtarget){break}//如果和上一个值相同且处于横向回溯的过程中就跳出当前迭代if(candidates[i] candidates[i-1] !used[i-1]){continue}path.push(currentNum)sum currentNumused[i] truebackTracking(i1,sum)sum - currentNumpath.pop()used[i] false}}backTracking(0,0)return res}console.log(combinationSum())
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/914190.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!