当前位置:网站首页>LeetCode_377_Combination Sum IV
LeetCode_377_Combination Sum IV
2022-08-02 12:31:00 【Fitz1318】
题目链接
题目描述
给你一个由 不同 整数组成的数组 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
进阶:如果给定的数组中含有负数会发生什么?问题会产生何种变化?如果允许负数出现,需要向题目中添加哪些限制条件?
解题思路
动态规划五部曲
确定
dp
数组及其下标含义dp[i]
:Gather together into a positive integeri
的排列个数
确定递推公式
dp[i] += dp[i- nums[j]]
dp
数组初始化dp[0] = 1
- 其他初始化为0即可,Because will be cover behind
确定遍历顺序
- The number can be unlimited use,States that this is a completely knapsack problem
- 得到的集合是排列,Then use the outerforIterate over the backpack,内层for循环遍历物品
举例推到
dp
数组
AC代码
class Solution {
public int combinationSum4(int[] nums, int target) {
int[] dp = new int[target + 1];
dp[0] = 1;
for (int i = 0; i <= target; i++) {
for (int j = 0; j < nums.length; j++) {
if (i >= nums[j]) {
dp[i] += dp[i - nums[j]];
}
}
}
return dp[target];
}
}
边栏推荐
猜你喜欢
随机推荐
php——三篇夯实根基第一篇
Swiper系列之轮播图
前男友买辣椒水威胁要抢女儿,女方能否申请人身安全保护令?
手撸架构,Mysql 面试126问
np.nan, np.isnan, None, pd.isnull, pd.isna finishing and summary
力扣35-搜索插入位置——二分查找
云原生(三十) | Kubernetes篇之应用商店-Helm介绍
以Boost为例的type3电压环补偿器实例
如何搭建威纶通触摸屏与S7-200smart之间无线PPI通信?
linux basic command explanation
Transfer files between servers
Basic protocol explanation
An example of type3 voltage loop compensator taking Boost as an example
30 lines of code to realize serverless real-time health code recognition -- operation manual
智能图像分析-智能家用电器图像目标检测统计计数检测与识别-艾科瑞特科技(iCREDIT)
How to better assess credit risk?Just watch this scorecard model live
一款强大的js弹出alert插件
Speed up your programs with bitwise operations
Pytorch 占用cpu资源过多
Process finished with exit code 1