leetcode hot100组合综合四

本题中,是要求nums中求的总和为target的排列数,因为题中说了,元素顺序不同,则可以视为不同的结果之一。

所以,根据对背包问题的总结,本题中元素可以重复使用,是完全背包并且需要求排列数,则我们需要考虑遍历顺序,先遍历背包(target),再遍历物品(nums)。并且在遍历背包的时候,我们应该采用正序遍历,因为是可以重复使用元素的。

递推公式:dp[j] += dp[j-nums[i]]。并且我们在初始化的时候,dp[0]应该为1,否则得出的结果就都是0了。

注意:这里背包也从0开始遍历,但是在最后写递推公式的时候,需要满足i>=nums[j],这样才能保证dp[i-nums[j]]索引正常。

复制代码
class Solution {
    public int combinationSum4(int[] nums, int target) {
        int n = nums.length;
        int[] dp = new int[target+1];
        dp[0] = 1;
        for(int i = 0;i<=target;i++){
            for(int j = 0;j<n;j++){
                if(i>=nums[j]){
                dp[i] += dp[i-nums[j]];
            }
            }
        }
        return dp[target];
    }
}
相关推荐
CoovallyAIHub12 分钟前
Moonshine:比 Whisper 快 100 倍的端侧语音识别神器,Star 6.6K!
深度学习·算法·计算机视觉
CoovallyAIHub1 小时前
速度暴涨10倍、成本暴降6倍!Mercury 2用扩散取代自回归,重新定义LLM推理速度
深度学习·算法·计算机视觉
CoovallyAIHub1 小时前
实时视觉AI智能体框架来了!Vision Agents 狂揽7K Star,延迟低至30ms,YOLO+Gemini实时联动!
算法·架构·github
CoovallyAIHub2 小时前
开源:YOLO最强对手?D-FINE目标检测与实例分割框架深度解析
人工智能·算法·github
CoovallyAIHub2 小时前
OpenClaw:从“19万星标”到“行业封杀”,这只“赛博龙虾”究竟触动了谁的神经?
算法·架构·github
刀法如飞2 小时前
程序员必须知道的核心算法思想
算法·编程开发·算法思想
徐小夕4 小时前
pxcharts Ultra V2.3更新:多维表一键导出 PDF,渲染兼容性拉满!
vue.js·算法·github
CoovallyAIHub4 小时前
OpenClaw一脚踩碎传统CV?机器终于不再只是看世界
深度学习·算法·计算机视觉
CoovallyAIHub5 小时前
仅凭单目相机实现3D锥桶定位?UNet-RKNet破解自动驾驶锥桶检测难题
深度学习·算法·计算机视觉
zone77395 小时前
002:RAG 入门-LangChain 读取文本
后端·算法·面试