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

力扣hot100_回溯(2)_python版本

一、39. 组合总和(中等)

在这里插入图片描述

  • 代码:
class Solution:
    def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:
        ans = []
        path = []

        def dfs(i: int, left: int) -> None:
            if left == 0:
                # 找到一个合法组合
                ans.append(path.copy())
                return

            if i == len(candidates) or left < 0:
                return

            # 不选
            dfs(i + 1, left)

            # 选
            path.append(candidates[i])
            dfs(i, left - candidates[i])
            path.pop()  # 恢复现场

        dfs(0, target)
        return ans

二、22. 括号生成

在这里插入图片描述

  • 代码
class Solution:
    def generateParenthesis(self, n: int) -> List[str]:
        m = n * 2  # 括号长度
        ans = []
        path = [''] * m  # 所有括号长度都是一样的 m
        # i = 目前填了多少个括号
        # open = 左括号个数,i-open = 右括号个数
        def dfs(i: int, open: int) -> None:
            if i == m:  # 括号构造完毕
                ans.append(''.join(path))  # 加入答案
                return
            if open < n:  # 可以填左括号
                path[i] = '('  # 直接覆盖
                dfs(i + 1, open + 1)  # 多了一个左括号
            if i - open < open:  # 可以填右括号
                path[i] = ')'  # 直接覆盖
                dfs(i + 1, open)
        dfs(0, 0)
        return ans

三、79. 单词搜索(中等)

在这里插入图片描述

  • 代码
class Solution:
    def exist(self, board: List[List[str]], word: str) -> bool:
        m, n = len(board), len(board[0])
        def dfs(i: int, j: int, k: int) -> bool:
            if board[i][j] != word[k]:  # 匹配失败
                return False
            if k == len(word) - 1:  # 匹配成功!
                return True
            board[i][j] = ''  # 标记访问过
            for x, y in (i, j - 1), (i, j + 1), (i - 1, j), (i + 1, j):  # 相邻格子
                if 0 <= x < m and 0 <= y < n and dfs(x, y, k + 1):
                    return True  # 搜到了!
            board[i][j] = word[k]  # 恢复现场
            return False  # 没搜到
        return any(dfs(i, j, 0) for i in range(m) for j in range(n))

相关文章:

  • 电商系统平台开发的主要技术宁波seo关键词培训
  • 建设银行网站-个人业务网站联盟广告
  • 上海企炬做的网站太原网站建设方案优化
  • 云南网站设计外包南京网站制作设计
  • 北京域名唐山百度提升优化
  • 廊坊做网站优化泰安网站建设优化
  • 升级 SAP S/4 HANA 之 EWM 攻略
  • aws(学习笔记第三十八课) codepipeline-build-deploy-github-manual
  • 系统配置篇,修改sem值
  • Docker 全面解析:从基础概念到实际应用
  • ARP攻击 DAI动态ARP检测学习笔记(超详细)
  • python网络爬虫
  • 一种反激变换器的设计思路(01)
  • golang-defer延迟机制
  • Spring Boot 邮件发送配置遇到的坑:解决 JavaMailSenderImpl 未找到的错误
  • 力扣第444场周赛
  • springMVC-拦截器详解
  • 算法精讲【整数二分】(实战教学)
  • Python语言的需求分析
  • 快速掌握Phoenix:简单易懂的搭建与配置指南
  • 2025 XYCTF Pwn-wp(含附件)
  • 【比赛编排软件的设计与实现】
  • Spring Boot默认注册的转换器列表及其功能说明。这些转换器使得控制器方法可以直接接收Integer、Long、Date等类型参数,无需手动实现转换
  • 重回全面发展亲自操刀
  • Redis哨兵模式下执行sentinel failover mymaster命令可能导致什么风险,如何避免
  • 1021 Deepest Root