GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — 组合总和-39 · Issue #72 · sl1673495/leetcode-javascript Open Labels Description给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明: 所有数字(包括 target)都是正整数。 来源:力扣(LeetCode) 思路这题乍一看很难,因为有重复元素,相对于之前的几道题来说引入了新的概念。 但是其实仔细想一下,之前的递归,我们对于 /** * @param {number[]} candidates * @param {number} target * @return {number[][]} */ let combinationSum = function (candidates, target) { let res = [] let helper = (start, prevSum, prevArr) => { // 由于全是正整数 所以一旦和大于目标值了 直接结束本次递归即可。 if (prevSum > target) { return } // 目标值达成 if (prevSum === target) { res.push(prevArr) return } for (let i = start; i < candidates.length; i++) { // 这里还是继续从start本身开始 因为多个重复值是允许的 let cur = candidates[i] let sum = prevSum + cur let arr = prevArr.concat(cur) helper(i, sum, arr) } } helper(0, 0, []) return res } Activity
MetadataMetadataAssigneesLabelsProjectsMilestoneRelationshipsDevelopmentIssue actions |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |