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

Leetcode Day21组合总和

39 元素可重复选

输入:candidates = [2,3,6,7], target = 7
输出:[[2,2,3],[7]]
可以重复选, 代表for j in range(start, n)中, 下一个dfs起点可以是j, 这样代表了重复选择, 但是如何保证不会死循环呢, 就需要利用都是正数的条件了

class Solution:def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:ans = []def dfs(path, partial_sum, start):if partial_sum > target:returnif partial_sum == target:ans.append(path[:])return for j in range(start, len(candidates)):path.append(candidates[j])dfs(path, partial_sum + candidates[j], j)path.pop()dfs([], 0, 0)return ans

39 nums中有重复, 但每个只能选一次

输入: candidates = [10,1,2,7,6,1,5], target = 8,
输出:
[
[1,1,6],
[1,2,5],
[1,7],
[2,6]
]

只用添加两个改变, 横向去重和下一个的开始index会变为j + 1

class Solution:def combinationSum2(self, candidates: List[int], target: int) -> List[List[int]]:ans = []candidates.sort()def dfs(path, partial_sum, start):if partial_sum > target:returnif partial_sum == target:ans.append(path[:])returnfor j in range(start, len(candidates)):if j > start and candidates[j] == candidates[j - 1]:continuepath.append(candidates[j])dfs(path, partial_sum + candidates[j], j + 1)path.pop()dfs([], 0, 0)return ans

377

输入: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)

class Solution:def combinationSum4(self, nums: List[int], target: int) -> int:dp = [1] + [0] * targetfor i in range(1, len(dp)):for num in nums:if num > target:continuedp[i] += dp[i - num]return dp[-1]

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 设计模式之-开闭原则
  • ecmascript和javascript的区别详细讲解
  • 云原生架构概念
  • 发那科A06B-6270-H045#H600 主轴伺服放大器
  • 1. GIS开发工程师岗位职责、技术要求和常见面试题
  • 数据访问:JPA关联MyBatis
  • 【ShuQiHere】深入理解递归:从基础概念到实际应用
  • mysql如何使用explain来分析语句使用到的索引效果
  • JAVA毕业设计167—基于Java+Springboot+vue3+小程序的物业管理系统小程序(源代码+数据库+万字论文+文献综述)
  • 基于BiLSTM-CRF的医学命名实体识别研究(下)模型构建
  • 【计算机网络】socket编程 --- 实现简易TCP网络程序
  • 【conda】入门与进阶:在Windows和Linux中管理环境和包
  • NXPFS6500
  • 电脑技巧:如何在Win11电脑上调整设置,让屏幕更加护眼?
  • 使用命令行窗口新建一个Java文件,输出HelloWorld
  • AngularJS指令开发(1)——参数详解
  • ES6简单总结(搭配简单的讲解和小案例)
  • IP路由与转发
  • JS函数式编程 数组部分风格 ES6版
  • MySQL QA
  • Nacos系列:Nacos的Java SDK使用
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • SpiderData 2019年2月16日 DApp数据排行榜
  • vue--为什么data属性必须是一个函数
  • webpack4 一点通
  • Yeoman_Bower_Grunt
  • yii2权限控制rbac之rule详细讲解
  • 爱情 北京女病人
  • 从零开始学习部署
  • 机器学习中为什么要做归一化normalization
  • 使用API自动生成工具优化前端工作流
  • 事件委托的小应用
  • 微信开源mars源码分析1—上层samples分析
  • 温故知新之javascript面向对象
  • 译米田引理
  • 原生js练习题---第五课
  • Semaphore
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 进程与线程(三)——进程/线程间通信
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #laravel 通过手动安装依赖PHPExcel#
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (十一)图像的罗伯特梯度锐化
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • *算法训练(leetcode)第三十九天 | 115. 不同的子序列、583. 两个字符串的删除操作、72. 编辑距离
  • .DFS.
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .NET C# 使用GDAL读取FileGDB要素类
  • .NET Core中如何集成RabbitMQ
  • .net framework 4.8 开发windows系统服务