当前位置: 首页 > 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) 

http://www.lryc.cn/news/295144.html

相关文章:

  • CleanMyMacX4.14.6如何清理mac垃圾内存
  • Java 学习和实践笔记(1)
  • 【自然语言处理-工具篇】spaCy<1>--介绍及安装指南
  • LeetCode树总结
  • AI专题:冬渐去、春将来,待看,AI 开花,数据挂果,可控链潮起
  • Netty源码系列 之 EventLoop run()方法 源码
  • ChatGPT 4.0 升级指南, ChatGPT Plus(GPT 4.0) 有何优势?
  • springboot157基于springboot的线上辅导班系统的开发与设计
  • 【机器学习】机器学习简单入门
  • 考研数据结构笔记(1)
  • 【深度学习理论】持续更新
  • npm ERR! reason: certificate has expired(淘宝镜像过期)
  • “极简壁纸“爬虫JS逆向·实战
  • Django通过Json配置文件分配多个定时任务
  • C++ 搜索二叉树的删除
  • 构建中国人自己的私人GPT—支持中文
  • elementui 回到顶部报错
  • go-carbon v2.3.8 发布,轻量级、语义化、对开发者友好的 golang 时间处理库
  • 【详解】斗地主随机发牌项目
  • 多账号运营为什么要使用动态住宅代理IP?
  • [C++] 如何使用Visual Studio 2022 + QT6创建桌面应用
  • Arduino 推出基于乐鑫 ESP32-S3 的 STEM 教育机器人
  • Blender使用Rigify和Game Rig Tool基础
  • 【Unity优化(一)】音频优化
  • 算法.1-三大排序算法-对数器-二分
  • Midjourney新功能介绍:风格参考(Style References)详解
  • C++ 11/14/17 智能指针
  • C++入门【37-C++ 拷贝构造函数】
  • [UI5 常用控件] 06.Splitter,ResponsiveSplitter
  • C遗漏知识(个人向)