栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

377. 组合总和 Ⅳ

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

377. 组合总和 Ⅳ

题目

给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。

题目数据保证答案符合 32 位整数范围。


题解

class Solution {
   
   int[] memo;
    public int combinationSum4(int[] nums, int target) {
        if(nums.length==1 && nums[0]>target) return 0;
        
        memo=new int[target+1];
        Arrays.fill(memo,-1);
        memo[0]=1;

       return backtrack(nums,target);
        

    }
    
    public int backtrack(int[] nums, int target){
        //递归出口
        if (memo[target] != -1) {
            return memo[target];
        }
       

        int res=0;
        for(int i=0;i 

注意:本题如果单纯的利用回溯,会出现超时。新学到处理方式:创建一个数组用于记录之前计算的结果,我们如果直接去数组里面找对应结果数即可。

数组的大小为target+1,并且除了首位元素为0,其余全部初始化为-1。

递归的出口是记录数组的元素不为-1,返回该元素值。当遍历完整个nums数组时,将结果放到记忆数组对应位置,并返回。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/693101.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号