从零学算法377

377. 组合总和 Ⅳ
给你一个由 不同 整数组成的数组 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

  • 其实就相当于70. 爬楼梯,只不过这里的一次可跳台阶数不止 1,2,而是 nums 而已,所以直接把 dp[i] = dp[i-1] + dp[i-2] 改成遍历 nums 尝试所有一次可跳台阶数即可,即跳到 i 阶可能为从 i-nums[j]nums[j] 而来,自然需要注意的是,首先确保 i >= nums[j]
  •   public int combinationSum4(int[] nums, int target) {int[] dp = new int[target + 1];dp[0] = 1;for(int i = 1;i <= target; i++){for(int x:nums){if(x <= i)dp[i] += dp[i-x];}}return dp[target];}
    
  • 同理,可以用递归转换成记忆化搜索的写法,记录每次递归结果,需要注意的是,由于组合成某个数的组合方式可能真的为 0,所以缓存数组 memo 我们初始化成 -1
  •   public int combinationSum4(int[] nums, int target) {int[] memo = new int[target + 1];Arrays.fill(memo, -1);return dfs(memo, nums, target);}public int dfs(int[] memo, int[] nums, int i){// target 减到 0 说明找到一种组合的可能,返回 1if(i == 0)return 1;if(memo[i] != -1)return memo[i];// 获得 res 就相当于上面获得 dp[i] 的部分,memo 就相当于 dp[x] 了int res = 0;for(int x:nums){if(x <= i)res += dfs(memo, nums, i - x);}memo[i] = res;return res;}
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/2841.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【操作系统】进程同步(水果盘问题)使用Python多线程threading实现

一、进程同步&#xff08;水果盘问题&#xff09; 1、吃水果问题&#xff1a;桌子有一只盘子&#xff0c;只允许放一个水果&#xff0c;父亲专向盘子放苹果&#xff0c;母亲专向盘子放桔子 儿子专等吃盘子的桔子&#xff0c;女儿专等吃盘子的苹果。只要盘子为空&#xff0c;父…

QA测试开发工程师面试题满分问答20: 软件的安全性应从哪几个方面去测试?

软件的安全性测试应从多个方面进行&#xff0c;并确保覆盖以下关键方面&#xff1a; 当回答问题时&#xff0c;可以根据自己的经验和知识&#xff0c;从上述要点中选择适合的方面进行详细说明。强调测试的综合性、全面性和持续性&#xff0c;并强调测试的重要性以及如何与开发团…

IDEA最好用插件推荐

1 背景 俗话说&#xff1a;“工欲善其事必先利其器”&#xff0c;本问介绍几款强大实用的 IDEA 插件&#xff0c;助力大家开发。 希望大家做一个聪明又努力的人&#xff0c;而不只是一个努力的人。 以下插件大都可以通过 IDEA 自带的插件管理中心安装&#xff0c;如果搜不到可以…

python字典和集合

字典&#xff08;Dictionary&#xff09; 键值对&#xff1a;字典存储键值对&#xff08;key-value pairs&#xff09;&#xff0c;其中键&#xff08;key&#xff09;是唯一的&#xff0c;而值&#xff08;value&#xff09;可以是任何数据类型。可变&#xff1a;字典是可变的…

恶补《操作系统》2_1——王道学习笔记

2操作系统-进程 2.1_1 进程的定义、组成、组织方式、特征 组成&#xff1a;PCB&#xff08;进程存在唯一的标志&#xff09;&#xff0c;程序段&#xff0c;数据段 组织方式&#xff1a;链接方式&#xff0c;指针指向不同的队列&#xff1b;索引方式&#xff0c;索引表 特征…

Uptime Kuma 使用指南:一款简单易用的站点监控工具

我平时的工作会涉及到监控&#xff0c;而站点是一个很重要的监控项。项目上线后&#xff0c;我们通常会将站点监控配置到云平台上&#xff0c;以检测各站点的连通性。但随着项目不断增多&#xff0c;云平台上的配额就有点捉急了。针对这个情况&#xff0c;我们可以试试这个开源…

使用H5+app在安卓5.1离线环境实现文字转语音

在Vue中实现中文文字转语音的方法可以使用HTML5的SpeechSynthesis API,同时需要考虑到在H5+ App里面的离线环境。 在配置文件中正确引入plus库: <script src="http://www.dcloud.io/helloh5plus/api.js"></script> 在Vue组件中使用SpeechSynthesi…

设计模式——状态模式19

状态模式是一种行为设计模式&#xff0c; 允许一个对象在其内部状态改变时改变它的行为&#xff0c;对象看起来好像修改了它的类。状态模式的核心是状态与行为绑定&#xff0c;不同的状态对应不同的行为。 设计模式&#xff0c;一定要敲代码理解 状态行为抽象 //在某种状态下&…

【网安小白成长之路】9.sql注入操作

&#x1f42e;博主syst1m 带你 acquire knowledge&#xff01; ✨博客首页——syst1m的博客&#x1f498; &#x1f51e; 《网安小白成长之路(我要变成大佬&#x1f60e;&#xff01;&#xff01;)》真实小白学习历程&#xff0c;手把手带你一起从入门到入狱&#x1f6ad; &…

SpringBoot整合七牛云实现图片的上传管理

唠嗑部分 各位小伙伴大家好&#xff0c;我是全栈小白&#xff0c;今天我们来分享一下SpringBoot如何整合七牛云存储实现图片的上传与存储 首先我们来说说图片存储&#xff0c;在项目中图片几乎是必不可少的&#xff0c;那么大家会选择怎样存储呢&#xff0c;当然有几种方案 …

XiaodiSec day027 Learn Note 小迪安全学习笔记

XiaodiSec day027 Learn Note 小迪安全学习笔记 记录得比较凌乱&#xff0c;不尽详细 27day 还是 sql 知识点 数据类型注入&#xff1a; 数字型&#xff0c;字符型&#xff0c;搜索型&#xff0c;加密型 开始 数字型 数字型是 0-9 字符型 字符型是 a-z 等 在接收 sql …

Science Robotics 美国斯坦福大学研制了外行星洞穴探测机器人

月球和火星上的悬崖、洞穴和熔岩管已被确定为具有地质和天体生物学研究理想地点。由于其隔绝特性&#xff0c;这些洞穴提供了相对稳定的条件&#xff0c;可以促进矿物质沉淀和微生物生长。在火星上&#xff0c;这些古老的地下环境与火星表面可能适合居住时几乎没有变化&#xf…

JSP合同信息管理系统

毕业设计&#xff08;论文&#xff09; 题 目&#xff1a; JSP合同信息管理系统 学 校&#xff1a; 专 业&#xff1a; 年 级&#xff1a; 姓 名…

Day16-Java进阶-线程通信线程生命周期线程池单例设计模式

1. 线程通信 1.1 线程通信介绍 1.2 两条线程通信 package com.itheima.correspondence;public class CorrespondenceDemo1 {/*两条线程通信*/public static void main(String[] args) {Printer1 p new Printer1();new Thread(new Runnable() {Overridepublic void run() {syn…

【亲测有用】idea2024.1中前进后退按钮图标添加

idea更新后&#xff0c;前进后退按钮消失了&#xff0c;现在说下怎么设置 具体操作如下&#xff1a; 1、选择 File / Settings(windows版)&#xff0c;或者Preferences(mac版) 2、打开 Appearance & Behavior 并选择 Menus and Toolbars 3、选择右侧的 “Main toolbar lef…

Python中pyside2出现的pyside2 qt platform plugin could be in错误及其解决方法

系统平台&#xff1a;Win10 64bit python版本&#xff1a; python 3.8 使用pip install pyside2安装 pyside2 这是找不到QT平台的插件&#xff0c;这是环境变量QT_QPA_PLATFORM_PLUGIN_PATH出现错误 具体解决方法&#xff1a; 我们可以在每一段程序开始之前设定环境变量&…

虚幻引擎5 Gameplay框架(一)

GamePlay概论与打包和批处理脚本 GamePlay简介与创建项目 GamePlay框架&#xff1a;用于设计游戏规则&#xff0c;组织和管理游戏核心逻辑、规则以及交互的一套结构化体系。 Default Pawn Class&#xff1a;定义角色行为逻辑&#xff0c;接收玩家控制器的输入&#xff0c;一般…

【R语言】组合图:散点图+箱线图+平滑曲线图+柱状图

用算数运算符轻松组合不同的ggplot图&#xff0c;如图&#xff1a; 具体代码如下&#xff1a; install.packages("devtools")#安装devtools包 devtools::install_github("thomasp85/patchwork")#安装patchwork包 library(ggplot2) library(patchwork) #p1是…

yolov9 tensorrt推理结果全为None

使用yolov9源码自带export.py函数将pt转为onnx和engine。在写部署代码时&#xff0c;发现使用python写推理代码&#xff0c;无论是fp32还是fp16的engine&#xff0c;最后结果都可以正常输出&#xff0c;但是在使用c写同样的推理代码时发现使用fp32的engine作为引擎&#xff0c;…

[ACTF2020 新生赛]Upload--BUUCTF

题&#xff1a; 第一步&#xff1a;上传php文件&#xff0c;他提示&#xff0c;只能上传jpg、png、gif 第二步&#xff1a;使用bp抓上传jpg文件的包&#xff0c;在修改文件后缀名为phtml 修改前 修改后 第三步&#xff1a;进行放过&#xff0c;在访问浏览器 得到&#xff1a;U…