首页 > 其他分享 >数字组合

数字组合

时间:2023-06-15 14:33:41浏览次数:33  
标签:数字 组合 int list candidates ans target


数字组合

题目:

描述
给定一个候选数字的集合 candidates 和一个目标值 target。 找到 candidates 中所有的和为 target 的组合。

在同一个组合中, candidates 中的某个数字出现次数不限。

所有数值 (包括 target ) 都是正整数.
返回的每一个组合内的数字必须是非降序的.
返回的所有组合之间可以是任意顺序.
解集不能包含重复的组合.
样例
样例 1:

输入: candidates = [2, 3, 6, 7], target = 7
输出: [[7], [2, 2, 3]]
样例 2:

输入: candidates = [1], target = 3
输出: [[1, 1, 1]]

解题思路:防止出现重复答案,先将数组进行排序,组合的时候不选择重复元素即可

public class Solution {
    /**
     * @param candidates: A list of integers
     * @param target: An integer
     * @return: A list of lists of integers
     */
    private List<List<Integer>> ans;
    public List<List<Integer>> combinationSum(int[] candidates, int target) {
        // write your code here
        ans = new ArrayList();
        Arrays.sort(candidates);
        dfs(candidates, 0, target, new ArrayList());
        return ans;
    }

    private void dfs(int[] candidates, int cur, int target, List<Integer> list) {
        if(target < 0) {
            return ;
        }
        
        if(target == 0) {
            ans.add(new ArrayList(list));
            return ;
        }
        
        for(int i = cur; i < candidates.length; i++) {
            if(i > 0 && candidates[i] == candidates[i - 1]) {
                continue ;
            }
            list.add(candidates[i]);
            dfs(candidates, i, target - candidates[i], list);
            list.remove(list.size() - 1);
        }
    }
}


标签:数字,组合,int,list,candidates,ans,target
From: https://blog.51cto.com/u_14813899/6487225

相关文章

  • JavaScript中将字符串转换为数字的七种方法总结 乘以数字: str = '2344'; console.lo
    JavaScript中将字符串转换为数字的七种方法总结乘以数字:str='2344';console.log(str*1)//expectedresult:2344https://www.jb51.net/article/261613.htm+目录1.使用parseInt()2.使用Number()3.使用一元运算符(+)4.使用parseFloat()5.使用Math.floor()6.乘......
  • PPT| XX华MES整合IIOT技术提升企业数字化智造(可下载))
    PPT总共有50页,受篇幅有限,有需要PPT的同学可以关注:智能制造数字化咨询PPT总共有50页,受篇幅有限,有需要PPT的同学可以关注:智能制造数字化咨询......
  • Mybatis中SqlNode的组合模式
    组合( Composite )模式就是把对象组合成树形结构,以表示“部分-整体”的层次结构,用户可以像处理一个简单对象一样来处理一个复杂对象,从而使得调用者无需了解复杂元素的内部结构。组合模式中的角色有:抽象组件(容器):定义了树形结构中所有类的公共行为,例如add(),remove()等方法。树叶:最终......
  • 第八章--FusionCharts Free和组合图XML
    时间:2009-01-1222:23      作者:道长AIEQQ百度POCOYahoo新浪365Key天极和讯博拉Live奇客鲜果收客饭否叽歪  xAxisName='Month' showValues='0' de......
  • 《数字逻辑电路》复习笔记
    其实还是计算机系的课比较适合写复习笔记emm数制和码制各种进制是什么意思:略进制间互相转换:10-2:%2取余,倒序就是二进制了2-8:三位一组化成8进制;8-2:每位扩充成三位2进制表示;(2-16同理)十进制数的二进制编码(BCD码):8421码:四位二进制码从高......
  • 【剑指Offer】6、旋转数组的最小数字
    【剑指Offer】6、旋转数组的最小数字题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组......
  • 对抗性自动编码器系列--有监督对抗自动编码器SAAE的原理及实现-随机数生成想要的数字
    文章目录前言监督对抗性自动编码器SAAE风格和内容的分离SAAE训练结果AEAAESAAE实验对比结果恢复效果对比从随机数重建图像的效果这部分实验代码前言先来看看实验:我们使用MNIST手写数字,测试通过自动编码器和对抗性自动编码器学习重建恢复效果。原始图像:自动编码器重建效果......
  • 对抗性自动编码器系列--自动编码器AutoEncoder的原理及实现-手写数字的重建
    文章目录前言自动编码器介绍自动编码器重建手写数字关于损失函数重建结果这部分实验代码前言先来看看实验:我们使用MNIST手写数字,测试通过自动编码器和对抗性自动编码器学习重建恢复效果。原始图像:自动编码器重建效果对抗性自动编码器重建效果虽然这里看到,自动编码器和对抗性自......
  • mongo聚合字符串类型的数字进行排序
    设置collationCollationcollation=Collation.of(Locale.CHINESE).numericOrdering(true);设置聚合选项Aggregationaggregation=Aggregation.newAggregation(Aggregation.match(orOperator),).withOptions(AggregationO......
  • 正则表达式判断数字----来源百度
    正则表达式判断数字----来源百度https://blog.csdn.net/changbozizf/article/details/112960409数字:^[0-9]*$n位的数字:^\d{n}$至少n位的数字:^\d{n,}$m-n位的数字:^\d{m,n}$零和非零开头的数字:^(0|[1-9][0-9]*)$非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$带1......