当前位置:网站首页>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;
};
边栏推荐
- R language uses the principal function of psych package to perform principal component analysis on the specified data set. PCA performs data dimensionality reduction (input as correlation matrix), cus
- Promise 在uniapp的简单使用
- torch建立的网络模型使用torchviz显示
- UML圖記憶技巧
- Bitwise logical operator
- Trying to use is on a network resource that is unavailable
- ESP8266-RTOS物联网开发
- UML图记忆技巧
- win10系统中的截图,win+prtSc保存位置
- JVM quick start
猜你喜欢
Unsupported operation exception
角色动画(Character Animation)的现状与趋势
Delay initialization and sealing classes
vb. Net changes with the window, scales the size of the control and maintains its relative position
MongoDB 的安装和基本操作
SAP ui5 date type sap ui. model. type. Analysis of the parsing format of date
【嵌入式】使用JLINK RTT打印log
ESP8266-RTOS物联网开发
win10系统中的截图,win+prtSc保存位置
深度剖析C语言指针
随机推荐
[embedded] cortex m4f DSP Library
Double pointeur en langage C - - modèle classique
Analysis of the source code of cocos2d-x for mobile game security (mobile game reverse and protection)
Super efficient! The secret of swagger Yapi
visdom可视化实现与检查介绍
Fairguard game reinforcement: under the upsurge of game going to sea, game security is facing new challenges
TP-LINK 企业路由器 PPTP 配置
[embedded] print log using JLINK RTT
Delay initialization and sealing classes
To effectively improve the quality of software products, find a third-party software evaluation organization
LeetCode:26. 删除有序数组中的重复项
Screenshot in win10 system, win+prtsc save location
Marathon envs project environment configuration (strengthen learning and imitate reference actions)
Indentation of tabs and spaces when writing programs for sublime text
深度剖析C语言数据在内存中的存储
Variable length parameter
深度剖析C语言指针
超高效!Swagger-Yapi的秘密
What are the common processes of software stress testing? Professional software test reports issued by companies to share
Excellent software testers have these abilities