当前位置: 首页 > news >正文

Leetcode 377 组合总和 Ⅳ

题意理解

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

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

        这道题目和凑零钱是一样的,需要求使用指定元素(纸币),凑出target(指定金额)有多少种方式。

        此处,元素是可以重复使用的,所以该问题是一个完全背包问题。

解题思路

        首先了解此题目是一个完全背包问题,所以遍历背包时正序,可以保证元素无限次使用。

        其次,确定题目求得是有多少种方式,而不是重量或最大价值,该题目不是一个纯背包问题。

        由于我们要求组成target得不同方式,1+2  和2+1 被看作是两种方式,所以这里求的是排列数,对于顺序有要求。

        根据之前的总结: 

        求组合数:先物体后背包

        求排列数,先背包后物体

        所以我们选择第二种

1.动态规划解题

 public int combinationSum4(int[] nums, int target) {
        if(nums.length<=0) return 0;
        int[] dp=new int[target+1];
        Arrays.fill(dp,0);
        dp[0]=1;
        for(int j=1;j<=target;j++){
            for(int i=0;i<nums.length;i++){
                if(nums[i]<=j){
                    dp[j]+=dp[j-nums[i]];
                }
            }
        }
        return dp[target];
    }

2.分析

时间复杂度:O(n^2)

空间复杂度:O(n) 

相关文章:

  • FlinkCDC全量及增量采集SqlServer数据
  • java -jar启动SpringBoot项目时配置文件加载位置与优先级
  • BC107 矩阵转置
  • 【教3妹学编程-算法题】1696. 跳跃游戏 VI
  • 【知识图谱+大模型的紧耦合新范式】Think-on-Graph:解决大模型在医疗、法律、金融等垂直领域的幻觉
  • Postman发送带登录信息的请求
  • web前后端小坑记录
  • git小白进阶之路
  • C#基础-线程暂停方案之重置事件
  • 状态压缩 笔记
  • 景联文科技受邀出席全国信标委生物特征识别分委会二届五次全会
  • Linux系统Shell脚本-----------正则表达式 文本三剑客之---------grep、 sed
  • LLM(大语言模型)——大模型简介
  • Python pyglet 游戏开发
  • 红队渗透靶机:TIKI: 1
  • ubuntu22.04@laptop OpenCV Get Started: 002_reading_writing_videos
  • 《动手学深度学习(PyTorch版)》笔记7.1
  • springboot157基于springboot的线上辅导班系统的开发与设计
  • Linux 网络编程 + 笔记
  • 用 Delphi 程序调用 Python 代码画曲线图 -- 数据来自 Delphi 程序
  • 东莞“超级”音乐节五一出圈背后:文旅热力何以澎湃经济脉动
  • 北上广深均宣布下调个人住房公积金贷款利率
  • 体坛联播|双杀阿森纳,巴黎晋级欧冠决赛对阵国际米兰
  • 明星站台“胖都来”背后:百元起录视频,20万可请顶流
  • 视频丨习近平主席出席俄方在机场举行的迎宾仪式
  • 8大类1000多支,中国红十字会已建成10万人规模救援队伍