题解 | 组合总数IV

alt

题干分析

题设给予我们一个可使用的正整数数组(数组内元素不重复)要求我们任意使用数组中的数组进排列,使得排列后所得的总和为给出的目标整数。求符合条件的排列总数。

算法思路

本题本质上是一个比较灵活的爬楼梯问题,我们可以将目标整数视作我们需要爬的楼梯总数,所给的正整数数组即为我们一步能够跨过的台阶数,计算排列的总数就理所应当的变为求爬上目标台阶数的方法数。

因此有DP状态转移方程:

以及初始条件:

实现代码

class Solution {
public:
    int combinationSum4(vector<int>& nums, int target) {
        vector<unsigned> dp(target + 1, 0); // unsigned 防溢出
        dp[0] = 1;
        for (int i = 1; i <= target; ++i) {
            for (auto n : nums) {
                if (n <= i) dp[i] += dp[i - n];
            }
        }
        return static_cast<int>(dp[target]);
    }
};

复杂度分析

  • 时间复杂度:从1到target各迭代一次,时间复杂度
  • 空间复杂度:dp数组空间消耗
全部评论

相关推荐

一共四面,进度挺快,希望能开高一点timeline:10.20&nbsp;一面&nbsp;50min10.22&nbsp;二面&nbsp;40min10.28&nbsp;hr面&nbsp;50min&nbsp;秒过约10.30主管面但是因为种种原因一直改时间到11月11.11&nbsp;主管面&nbsp;50min一面:简历拷打20min,主要是实习业务和微前端框架,然后是八股:react&nbsp;hooks,有哪些,怎么用,useEffect和useEvent区别,useMemo和react.memo区别,为什么不能在条件里用浏览器css和js和dom的解析具体过程,谁先谁后表格缓存怎么做,首屏加载怎么监控的,虚拟表格实现原理,怎么做表格选型的平时怎么使用ai,有哪些心得怎么看待ai手撕忘了,应该不是特别难的不然我会记得p.s&nbsp;面试官好有礼貌,唯一一个称呼为您的,答错了会有正确解答二面:1.受到ddos攻击后有哪些应对方案2.前端安全用过哪些3.webpack配置过什么,有用过什么插件4.树摇原理5.react和vue区别6.为什么要微前端改造7.微前端隔离的原理,快照和proxy的优缺点8.服务器部署原理,回滚原理这个的手撕也忘了,没印象就是不太难三面hr面:hr挺好的,没有压力1.个人经历询问2.为什么跑路了实习3.觉得最有成就感的事情4.有没有主导过项目5.三个词语形容自己&nbsp;为什么这么说6.现在最想提升的方面7.为什么选AI初创不选大厂8.对AI的看法四面主管面:拖了好久才来面,还以为不想要我了一眼看出来是字节出来的,之前的同事都是这种高效礼貌的1.讲讲你实习的优化的具体2.有没有什么沟通协作的经历3.形容自己有xxx的原因4.除了想要提升技术还有什么软素质想要提升5.其他offer&nbsp;意向城市6.反问业务,是根据base地和个人倾向决定=MiniMax&nbsp;26-27届内推!!!【公司简介】MiniMax是全球领先的通用人工智能科技公司,自研多模态大模型包括MiniMax&nbsp;M2.1、Hailuo&nbsp;2.3、Speech&nbsp;2.6和Music&nbsp;2.0等,产品包括MiniMax&nbsp;Agent、海螺AI、星野等,覆盖200多个国家和地区。✅&nbsp;行业顶尖薪资+免费三餐✅&nbsp;近距离接触AI前沿技术✅&nbsp;大佬带飞+快速成长通道📮&nbsp;投递直达:https://vrfi1sk8a0.jobs.feishu.cn/s/asR1WdbhB4c【内推码】MJMNS4C(简历筛选加速,面试流程加快!流程有问题欢迎咨询!)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务