【Leetcode】377. 组合总和 Ⅳ

这篇具有很好参考价值的文章主要介绍了【Leetcode】377. 组合总和 Ⅳ。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目

题目链接🔗
给你一个由 不同 整数组成的数组 n u m s nums nums,和一个目标整数 t a r g e t target target 。请你从 n u m s nums nums 中找出并返回总和为 t a r g e t target target 的元素组合的个数。

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

示例 1:
**输入:**nums = [1,2,3], target = 4
**输出:**7
解释:
所有可能的组合为:
(1, 1, 1, 1)
(1, 1, 2)
(1, 2, 1)
(1, 3)
(2, 1, 1)
(2, 2)
(3, 1)
请注意,顺序不同的序列被视作不同的组合。

示例 2:
**输入:**nums = [9], target = 3
**输出:**0

提示:

  • 1 ≤ n u m s . l e n g t h ≤ 200 1 \leq nums.length \leq 200 1nums.length200
  • 1 ≤ n u m s [ i ] ≤ 1000 1 \leq nums[i] \leq 1000 1nums[i]1000
  • n u m s nums nums 中的所有元素 互不相同
  • 1 ≤ t a r g e t ≤ 1000 1 \leq target \leq 1000 1target1000

思路

这道题可以使用动态规划来解决。我们定义一个数组 d p dp dp,其中 d p [ i ] dp[i] dp[i] 表示选取的元素之和等于 i i i 的方案数。目标是求 d p [ t a r g e t ] dp[target] dp[target]

动态规划的边界是 d p [ 0 ] = 1 dp[0]=1 dp[0]=1,因为只有当不选取任何元素时,元素之和才为 0 0 0,所以只有 1 1 1 种方案。

对于 1 ≤ i ≤ t a r g e t 1 \leq i \leq target 1itarget,我们遍历数组 n u m s nums nums 中的每个元素 n u m num num,当 n u m ≤ i num \leq i numi 时,将 d p [ i − n u m ] dp[i-num] dp[inum] 的值加到 d p [ i ] dp[i] dp[i]

最终, d p [ t a r g e t ] dp[target] dp[target] 的值即为答案。

通过遍历数组 n u m s nums nums 中的每个元素来更新 d p [ i ] dp[i] dp[i] 的值,不同的选取顺序都会被考虑到。

代码

class Solution {
public:
    long long dp[1010];
    int combinationSum4(vector<int>& nums, int target) {
        dp[0]=1;
        for(int i=0;i<=target;i++){
            for(int j=0;j<nums.size();j++){
                if(i>=nums[j])
                dp[i]=(int)dp[i]+dp[i-nums[j]];
            }
        }
        return dp[target];
    }
};

复杂度分析

时间复杂度

假设数组 n u m s nums nums 的长度为 n n n,目标整数为 t a r g e t target target,那么时间复杂度为 O ( n ⋅ t a r g e t ) O(n \cdot target) O(ntarget)

空间复杂度

空间复杂度为 O ( t a r g e t ) O(target) O(target),即动态规划数组的长度

结果

【Leetcode】377. 组合总和 Ⅳ,练习题(记录做题想法),leetcode,代理模式,算法,c++,职场和发展

总结

动态规划文章来源地址https://www.toymoban.com/news/detail-856241.html

到了这里,关于【Leetcode】377. 组合总和 Ⅳ的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LC377. 组合总和 Ⅳ

    代码随想录 

    2024年01月23日
    浏览(56)
  • 377. 组合总和 Ⅳ 70.魔改爬楼梯

    题目: 给一个正整数数组和一个正整数目标值,数组的每个元素可取无限次,求总额达到目标值的最大排列数。  dp[j]含义: dp[j]:达到目标值j的整数组合数为dp[j] 递推公式: 求装满背包有几种方法(组合,排列数)用:dp[j] += dp[j - nums[i]]; 初始化: dp[0]=1 遍历顺序: 先物品

    2024年02月08日
    浏览(40)
  • 记录-js基础练习题

    隔行换色(%): 简易计算器: 双色球随机数生成: 目标:生成一组(7个) 1-33之间的随机不重复的整数(1.生成一个1-33之间的整数。 2.生成7个–循环长度不固定用while循环。 3.要求不重复,补零操作) 鼠标滑过div显示隐藏: 条件判断if: 点击按钮,如果div显示,那么隐藏它

    2023年04月17日
    浏览(34)
  • 力扣(LeetCode)数据结构练习题(2)

    今天又写了两道关于链表的练习题,来给大家分享一下。巩固一下上一篇学到的链表知识,题目可以然我们更清楚的认识链表。 目录 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表 给你单链表的头结点 head ,请你找出并返回链表的中间结点。如果有两个中

    2024年02月21日
    浏览(56)
  • 【LeetCode】练习习题集【4月 - 7 月】

    1.重复数 题目: 代码: 9.回文数 题目: 思路: 如果是负数一定不是回文数 直接返回false 如果是正数,则将其倒序数值计算出来,然后比较和原数值是否相等 如果是回文数相等返回true 不相等返回false 代码: 13. 罗马数字转整数 (https://leetcode.cn/problems/roman-to-integer/) 题目:

    2024年02月13日
    浏览(43)
  • 【数据结构】顺序表详解(附leetcode练习题)

    ☃️个人主页:fighting小泽 🌸作者简介:目前正在学习C语言和数据结构 🌼博客专栏:数据结构 🏵️欢迎关注:评论👊🏻点赞👍🏻留言💪🏻 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺

    2023年04月27日
    浏览(49)
  • 动态规划part06 518. 零钱兑换 II 377. 组合总和 Ⅳ

     518 零钱兑换|| 377. 组合总和 Ⅳ  

    2024年01月20日
    浏览(50)
  • Day 44 | 动态规划 完全背包、518. 零钱兑换 II 、 377. 组合总和 Ⅳ

    题目 文章讲解 视频讲解 完全背包和0-1背包的区别在于:物品是否可以重复使用 思路:对于完全背包问题,内层循环的遍历方式应该是从weight[i]开始一直遍历到V,而不是从V到weight[i]。这样可以确保每种物品可以被选择多次放入背包,从而求解完全背包问题。 对于完全背包问

    2024年02月20日
    浏览(44)
  • 算法 DAY44 动态规划6 完全背包 518. 零钱兑换 II 377. 组合总和 Ⅳ

    有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。 完全背包和01背包问题唯一不同的地方就是,每种物品有无限件。 动规五步曲来分

    2024年02月01日
    浏览(53)
  • 模拟实现atoi函数(将数字字符串转换为整型)附加leetcode练习题

    各位朋友们,大家好啊!今天我为大家分享的知识是如何模拟实现atoi函数。相信大家如果能够理解这个知识,对大家以后的刷题是有帮助的。 我们要想实现某个函数,我们肯定要先知道这个函数的作用是什么,然后我们再根据它的作用来自己实现。我们先来看看stoi函数在库

    2023年04月19日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包