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

Python | Leetcode Python题解之第494题目标和

题目:

题解:

class Solution:
    def findTargetSumWays(self, nums: List[int], target: int) -> int:
        
        cache = {}      # 记忆化单元
        
        # @functools.cache  # Python functools自带记忆化单元【启用后可省去自定义cache单元】
        def dfs(i, summ, t):
            '''summ: 前i个元素的表达式之和; t: 目标值'''
            if (i, summ) in cache:          # 记忆化:已存在,直接返回
                return cache[(i, summ)]

            if i == len(nums):              # 遍历完了全部的元素,递归中止
                if summ == t:               # 找到了一个满足要求的组合
                    cache[(i, summ)] = 1
                else:
                    cache[(i, summ)] = 0
                return cache[(i, summ)]
            
            pos_cnt = dfs(i+1, summ + nums[i], t)       # nums[i]前面添加'+'号
            neg_cnt = dfs(i+1, summ - nums[i], t)       # nums[i]前面添加'-'号
            cache[(i, summ)] = pos_cnt + neg_cnt        # 以上两种情况的组合数之和
            return cache[(i, summ)]
        
        return dfs(0, 0, target)

http://www.kler.cn/news/356948.html

相关文章:

  • C++之const指针和const变量
  • 【Python】基础语法-输入输出
  • Mongodb基础用法【总结】
  • ‘perl‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  • JS异步编程进阶(二):rxjs与Vue、React、Angular框架集成及跨框架状态管理实现原理
  • 【React】事件绑定的方式
  • 【SSM详细教程】-03-Spring参数注入
  • 解锁A/B测试:如何用数据驱动的实验提升你的网站和应用
  • 过滤器Filter的介绍和使用
  • 聊聊 Facebook Audience Network 绑定收款账号的问题
  • Linux执行source /etc/profile命令报错:权限不够问(已解决)
  • Linux 之 fdisk 【磁盘分区管理】
  • oracle + mybatis 批量新增
  • lodash 和 lodash-es 的区别
  • leetcode289:生命游戏
  • Java基于微信小程序的公考学习平台的设计与实现,附源码+文档
  • 面试八股(自用)
  • Ubuntu22.04安装RTX3080
  • 汽车零部件行业CRM应用数字化解决方案解析
  • 【服务器部署】Docker部署小程序