0x3f 第40天 setnx的分布式锁和redission,写了一天项目书,光背了会儿八股,回溯(单词搜索)

单词搜索

可以评到难的程度,和N皇后难度差不多,虽然逻辑简单一点

剪枝1:把board里的cnt一遍,如果要查的word的cnt比board的多,那肯定无解

剪枝2:考虑word的第一个字母出现的多,还是word的最后一个字母出现的多

核心思路:先剪枝

循环体需要三个参数,i,j负责定位,k负责指向目前在查word的第k个字母

i,j 不等于第k个字母False

已经遍历到第k个字母,在结合前面没有返回False,那就说明True

循环体:遍历过的都做标记,和寻找岛屿一样

用xy来找上下左右有没有符合的

if 0<=x<m and 0<=y<n and dfs(x,y,k+1):

如果没找到

恢复现场

return False

最终遍历使用any 因为任何一个点都可以是查询的起点

复制代码
class Solution:
    def exist(self, board: List[List[str]], word: str) -> bool:
        cnt = Counter(c for row in board for c in row)
        #剪枝
        if cnt<Counter(word):
            return False
        #剪枝
        if cnt[word[-1]]<cnt[word[0]]:
            word = word[::-1]
        m,n = len(board),len(board[0])
        def dfs(i,j,k):
            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))

黑马点评:setnx和redission

相关推荐
TAN-90°-4 分钟前
Deep Learning for Computer Vision——Generative Models 2
人工智能·深度学习·神经网络·算法·目标检测·机器学习·计算机视觉
Rabitebla11 分钟前
【Linux系统编程】指令(三):创建、删除、复制、移动、看内容
linux·数据结构·c++·算法
圣保罗的大教堂43 分钟前
leetcode 1401. 圆和矩形是否有重叠 中等
leetcode
qq_410194291 小时前
.NET 8.0 下基于 PaddleOCRSharp 的离线文字识别落地指南
算法·.net
Omics Pro1 小时前
1个月2轮融资!长寿虚拟细胞
数据库·人工智能·算法·机器学习·自然语言处理
residual_fan1 小时前
航空发动机故障诊断专用智能体(六):实际机队健康管理中的应用考量与展望
人工智能·算法·数据挖掘·数据分析
hansang_IR1 小时前
【讲解】CSP-S2026 第一轮初赛
c++·算法
hanlin031 小时前
刷题笔记:力扣第76题-最小覆盖子串
笔记·算法·leetcode
Zane19941 小时前
比较排序跑不出O(nlogn)是数学上证明过的,计数、桶、基数排序凭什么能绕开这堵墙
算法·排序算法
tiger8651 小时前
大语言模型面试和题解,梳理中国主流开源 LLM 系列的发展脉络、技术路线与工程取舍
人工智能·gpt·深度学习·算法·自然语言处理·面试·transformer