力扣: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();
        }
    }
}
相关推荐
透明的玻璃杯9 小时前
window环境下使用类似tail的命令跟踪滚动的日志
windows
私人珍藏库9 小时前
【windows】跨平台 Android 刷机Root工具箱
android·windows·工具·刷机·软件·多功能
航Hang*12 小时前
Windows Server 配置与管理——第12章:配置数字证书服务器
运维·服务器·windows
XiYang-DING14 小时前
【LeetCode】Hash | 136.只出现一次的数字
算法·leetcode·哈希算法
百事牛科技14 小时前
保护文档安全:PDF限制功能实操方法
windows·pdf
夏冰加密软件15 小时前
【实测】文件加密软件解除保护的2种方法(以超级加密3000为例)
windows·安全
猫头虎15 小时前
Windows毫秒级文件名搜索工具Everything最新版下载、安装、配置、新功能解析指南
windows·everything
嘻嘻哈哈樱桃16 小时前
俄罗斯套娃信封问题力扣--354
算法·leetcode·职场和发展
田梓燊16 小时前
2026/4/12 leetcode 1320
算法·leetcode·职场和发展
j_xxx404_16 小时前
力扣题型--链表(两数相加|两两交换链表中的节点|重排链表)
数据结构·c++·算法·leetcode·蓝桥杯·排序算法