2024.4.22每日一题

LeetCode

组合总和 IV

题目链接:377. 组合总和 Ⅳ - 力扣(LeetCode)

题目描述

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

题目数据保证答案符合 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 <= nums.length <= 200
  • 1 <= nums[i] <= 1000
  • nums 中的所有元素 互不相同
  • 1 <= target <= 1000

**进阶:**如果给定的数组中含有负数会发生什么?问题会产生何种变化?如果允许负数出现,需要向题目中添加哪些限制条件?

思路

代码

C++
class Solution {
    int dfs(int i,vector<int> &nums, vector<int> &memo){
        if(i == 0){
            return 1;
        }
        int &res = memo[i];
        if(res != -1){
            return res;
        }
        res = 0;
        for(int x : nums){
            if(x <= i){
                res += dfs(i - x,nums, memo);
            }
        }
        return res;
    }
public:
    int combinationSum4(vector<int>& nums, int target) {
        vector<int> memo(target + 1, -1);
        return dfs(target, nums, memo);
    }
};
Java
class Solution {
    public int combinationSum4(int[] nums, int target) {
        int[] memo = new int[target + 1];
        Arrays.fill(memo, -1); // -1 表示没有计算过
        return dfs(target, nums, memo);
    }

    private int dfs(int i, int[] nums, int[] memo) {
        if (i == 0) { // 爬完了
            return 1;
        }
        if (memo[i] != -1) { // 之前计算过
            return memo[i];
        }
        int res = 0;
        for (int x : nums) { // 枚举所有可以爬的台阶数
            if (x <= i) {
                res += dfs(i - x, nums, memo);
            }
        }
        return memo[i] = res; // 记忆化
    }
}

相关推荐

  1. 每日】01

    2024-04-23 13:44:01       22 阅读
  2. 每日cf

    2024-04-23 13:44:01       26 阅读
  3. 每日——第二十

    2024-04-23 13:44:01       22 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-23 13:44:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-23 13:44:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-23 13:44:01       82 阅读
  4. Python语言-面向对象

    2024-04-23 13:44:01       91 阅读

热门阅读

  1. RedisSearch:一个基于Redis的搜索引擎模块

    2024-04-23 13:44:01       188 阅读
  2. VScode 里面使用 python 去直接调用 CUDA

    2024-04-23 13:44:01       36 阅读
  3. 从零开始精通RTSP之深入理解RTCP协议

    2024-04-23 13:44:01       43 阅读
  4. 基于spring boot开发的快递管理系统开题报告

    2024-04-23 13:44:01       32 阅读
  5. 使用selenium调用firefox提示Profile Missing的问题解决

    2024-04-23 13:44:01       33 阅读
  6. 【前端】vue.config.js打包时不编译

    2024-04-23 13:44:01       34 阅读
  7. vue中如何控制一个全局接口的调用频率

    2024-04-23 13:44:01       37 阅读
  8. ui_admin_vue3启动

    2024-04-23 13:44:01       31 阅读
  9. 图片 组件 vue2+element

    2024-04-23 13:44:01       35 阅读
  10. 谈谈 vue 生命周期

    2024-04-23 13:44:01       35 阅读
  11. python输入输出特殊处理

    2024-04-23 13:44:01       40 阅读
  12. 单链表(详解)

    2024-04-23 13:44:01       29 阅读
  13. 腾讯云开通幻兽帕鲁服务器需要多少钱?30元

    2024-04-23 13:44:01       38 阅读