当前位置:网站首页>Leetcode question brushing record (array) combination sum, combination sum II
Leetcode question brushing record (array) combination sum, combination sum II
2022-07-07 09:04:00 【White butterfly】
I haven't scratched the question for a long time , I haven't written a blog for a long time , The strangest thing is that I haven't been busy lately , Autumn moves are just around the corner , This article only records the process of question brushing , Prepare for future review
One 、 Combinatorial summation
This problem is a typical DFS, Search deeply by selecting and not selecting two states , Because a number can be selected unlimited times , So in recursion , There is no need to add one to the subscript
class Solution {
public List<List<Integer>> combinationSum(int[] candidates, int target) {
List<Integer> item = new ArrayList<>();
List<List<Integer>> ans = new ArrayList<List<Integer>>();
dfs(candidates,target,item,ans,0);
return ans;
}
public void dfs(int[] candidates, int target,List<Integer> item,List<List<Integer>> ans,int index){
if(index == candidates.length){
return ;
}
if(target == 0){
ans.add(new ArrayList(item));
return ;
}
// No election
dfs(candidates,target,item,ans,index+1);
// choose
if(target-candidates[index] >= 0){
item.add(candidates[index]);
dfs(candidates,target-candidates[index],item,ans,index);
item.remove(item.size()-1);
}
}
}
Two 、 Combinatorial summation II
This question is more restrictive than the previous one , Each number can only be used once , And cannot contain duplicate sets
1、 Use each number once : This only needs to let index++ It can be solved , The current number is selected , You can't choose this number
2、 Cannot contain duplicate sets : We can arrange the array first , In each layer of the loop, only A number , for example :1 1 1 2 2 This group of numbers , If the first one is selected in the first layer of loop 1, Then you can't choose the second 1, The next time you choose to meet the conditions, you can only choose 2, Otherwise, it will cause repeated problems
class Solution {
public List<List<Integer>> combinationSum2(int[] candidates, int target) {
List<Integer> item = new ArrayList<>();
List<List<Integer>> ans = new ArrayList<List<Integer>>();
Arrays.sort(candidates);
dfs(candidates,target,item,ans,0);
return ans;
}
public void dfs(int[] candidates, int target,List<Integer> item,List<List<Integer>> ans,int index){
if(target == 0){
ans.add(new ArrayList(item));
return ;
}
for(int i = index ; i <candidates.length ; i++){
if(i!=index&&candidates[i]==candidates[i-1]){
// Prevent the same layer from circulating and selecting the same number
continue;
}
if(target - candidates[i] >= 0){
item.add(candidates[i]);
dfs(candidates,target-candidates[i],item,ans,i+1);
item.remove(item.size()-1);
}
}
}
}
边栏推荐
- PMP experience learning and sharing process
- STM32的时钟系统
- RuntimeError: Calculated padded input size per channel: (1 x 1). Kernel size: (5 x 5). Kernel size c
- Port occupation troubleshooting
- JVM 垃圾回收 详细学习笔记(二)
- Systick滴答定时器
- Panel display technology: LCD and OLED
- Calf problem
- [chaosblade: node CPU load, node network delay, node network packet loss, node domain name access exception]
- Test pits - what test points should be paid attention to when adding fields to existing interfaces (or database tables)?
猜你喜欢
随机推荐
Led analog and digital dimming
What are the suggestions for PMP candidates?
【Istio Network CRD VirtualService、Envoyfilter】
Enterprise manager cannot connect to the database instance
Output all composite numbers between 6 and 1000
使用Typora编辑markdown上传CSDN时图片大小调整麻烦问题
PMP Exam Preparation experience systematically improve project management knowledge through learning
【ChaosBlade:节点 CPU 负载、节点网络延迟、节点网络丢包、节点域名访问异常】
Speaking of a software entrepreneurship project, is there anyone willing to invest?
Markdown编辑器Editor.md插件的使用
go mod module declares its path as: gtihub. com/xxx-xx but was required as:xx-xx
On December 8th, 2020, the memory of marketing MRC application suddenly increased, resulting in system oom
平台化,强链补链的一个支点
JVM 内存结构 详细学习笔记(一)
With an annual salary of 50W, Alibaba P8 will come out in person to teach you how to advance from testing
Interpretation of MySQL optimization principle
[chaosblade: node CPU load, node network delay, node network packet loss, node domain name access exception]
【ChaosBlade:节点磁盘填充、杀节点上指定进程、挂起节点上指定进程】
PMP examination experience sharing
Calculation s=1+12+123+1234+12345 C language