力扣:40. 组合总和 II

回溯:

1.先声明好大集合和小集合,在调用回溯函数,终止条件为sum==target,要进行剪枝操作减少遍历的次数,去重操作防止数组中有两个相同的值来组成的集合相同。

java 复制代码
class Solution {
    List<List<Integer>> li1=new ArrayList<List<Integer>>();
    List<Integer> li2=new ArrayList<Integer>();
    public List<List<Integer>> combinationSum2(int[] candidates, int target) {
        //接收计算总和
        int sum=0;
        //方便去重操作
        Arrays.sort(candidates);
        huisu(candidates,target,0,sum);
        return li1;
    }
    public void huisu(int[] candidates,int target,int Index,int sum){
        //终止条件
        if(sum==target ){
            li1.add(new ArrayList<>(li2));
            return ;
        }
        //遍历和剪枝操作
        for(int i=Index;i<candidates.length&&sum+candidates[i]<=target;i++){
    //去重操作
            if (i>Index&&candidates[i]==candidates[i-1]){
                 continue;
            } 
            //加入集合li2中
            li2.add(candidates[i]);
            sum+=candidates[i];
            //嵌套
            huisu(candidates,target,i+1,sum);
            //回溯操作
            sum-=li2.get(li2.size()-1);
            li2.removeLast();
        }
    }
}
相关推荐
水饺编程1 小时前
编程基础:令牌粘贴指令,【##】
c语言·c++·windows·visual studio
Vodka~2 小时前
一根网线——Windows共享网络给Linux访问互联网
linux·网络·windows
人道领域2 小时前
【LeetCode刷题日记】513.二叉树左下角值的三种解法:从常规BFS到DFS的优雅之旅
数据结构·算法·leetcode·深度优先·广度优先
森叶2 小时前
Windows 下从 Chromium/V8 源码编译 V8 10.8.168.25
windows
love530love2 小时前
ComfyUI:为什么说它是 AIGC 应用层面的集大成者?
人工智能·pytorch·windows·aigc·devops·comfyui·extensions
吃着火锅x唱着歌2 小时前
LeetCode 503.下一个更大元素II
算法·leetcode·职场和发展
_深海凉_2 小时前
LeetCode热题100-将有序数组转换为二叉搜索树
数据结构·算法·leetcode
HLJ洛神千羽3 小时前
提升电脑无线网络性能方案
windows
xdpcxq10293 小时前
Ubuntu 24.04 安装企业微信(deepin-wine 版)完整指南
windows·ubuntu·企业微信
kebeiovo4 小时前
Windows下Codex安装详细配置使用指南
windows·codex