当前位置:网站首页>LeetCode:39. Combined sum
LeetCode:39. Combined sum
2022-07-06 08:50:00 【Bertil】
To give you one No repeating elements Array of integers for candidates And a target integer target , find candidates You can make the sum of numbers as the target number target Of all Different combinations , And return... As a list . You can press In any order Return these combinations .
candidates Medium The same Numbers can Unlimited repeat selected . If the selected number of at least one number is different , Then the two combinations are different .
For a given input , Guarantee and for target The number of different combinations of is less than 150 individual .
Example 1:
Input :candidates = [2,3,6,7], target = 7
Output :[[2,2,3],[7]]
explain :
2 and 3 Can form a set of candidates ,2 + 2 + 3 = 7 . Be careful 2 You can use it multiple times .
7 Is also a candidate , 7 = 7 .
Only these two combinations .
Example 2:
Input : candidates = [2,3,5], target = 8
Output : [[2,2,2,2],[2,3,3],[3,5]]
Example 3:
Input : candidates = [2], target = 1
Output : []
Tips :
- 1 <= candidates.length <= 30
- 1 <= candidates[i] <= 200
- candidate Every element in is Different from each other
- 1 <= target <= 500
Their thinking
1. Using backtracking ( namely DFS Prune with constraints ): First, ascending the array , Then define recursive functions , But pay attention to : Numbers can be reused , So every recursion , The starting point of incoming is i
2. Use two conditions to prune , Recursive exit :
- Meet the conditions , Copy one into the result array
- The number of remaining targets is less than the current element , The latter elements will only be larger , Abandon this round directly
Backtracking and DFS, The main difference is , The backtracking method does not retain the complete tree structure in the solution process , While depth first search records the complete search tree
Code
/** * @param {number[]} candidates * @param {number} target * @return {number[][]} */
var combinationSum = function(candidates, target) {
const res = [];
// Ascending sort
candidates.sort((a, b) => a - b);
const search = (path, target, start) => {
if (target === 0) {
// Meet the conditions , Copy one into the result array
res.push([...path]);
return;
}
// Note that the starting point is start
for (let i = start; i < candidates.length; i++) {
// The number of remaining targets is less than the current element , The latter elements will only be larger , Abandon this round directly
if (target < candidates[i]) return;
path.push(candidates[i]);
// Numbers can be repeated , So the introduction i
search(path, target - candidates[i], i);
path.pop();
}
};
search([], target, 0);
return res;
};
边栏推荐
- Unsupported operation exception
- 生成器参数传入参数
- Tcp/ip protocol
- UnsupportedOperationException异常
- Delay initialization and sealing classes
- win10系统中的截图,win+prtSc保存位置
- View computer devices in LAN
- LeetCode:214. 最短回文串
- Process of obtaining the electronic version of academic qualifications of xuexin.com
- TP-LINK enterprise router PPTP configuration
猜你喜欢
Visual implementation and inspection of visdom
项目连接数据库遇到的问题及解决
Problems in loading and saving pytorch trained models
JS native implementation shuttle box
C語言雙指針——經典題型
sublime text的编写程序时的Tab和空格缩进问题
Marathon envs project environment configuration (strengthen learning and imitate reference actions)
【剑指offer】序列化二叉树
UML diagram memory skills
Screenshot in win10 system, win+prtsc save location
随机推荐
企微服务商平台收费接口对接教程
Compétences en mémoire des graphiques UML
Target detection - pytorch uses mobilenet series (V1, V2, V3) to build yolov4 target detection platform
MongoDB 的安装和基本操作
What is the role of automated testing frameworks? Shanghai professional third-party software testing company Amway
LeetCode:214. 最短回文串
Trying to use is on a network resource that is unavailable
C語言雙指針——經典題型
Alibaba cloud server mining virus solution (practiced)
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
LeetCode:34. 在排序数组中查找元素的第一个和最后一个位置
LeetCode:26. 删除有序数组中的重复项
Deep analysis of C language pointer
Pytorch view tensor memory size
同一局域网的手机和电脑相互访问,IIS设置
角色动画(Character Animation)的现状与趋势
Bitwise logical operator
To effectively improve the quality of software products, find a third-party software evaluation organization
@Jsonbackreference and @jsonmanagedreference (solve infinite recursion caused by bidirectional references in objects)
Problems encountered in connecting the database of the project and their solutions