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

企业建立网站的原因合肥网络推广公司乐蜂

企业建立网站的原因,合肥网络推广公司乐蜂,建筑网课回放,天猫商城官网下载题目#xff1a;79. 单词搜索 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中#xff0c;返回 true #xff1b;否则#xff0c;返回 false 。 单词必须按照字母顺序#xff0c;通过相邻的单元格内的字母构成#xff0c;其中“相邻…题目79. 单词搜索 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中返回 true 否则返回 false 。 单词必须按照字母顺序通过相邻的单元格内的字母构成其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 示例 1 输入board [[A,B,C,E],[S,F,C,S],[A,D,E,E]], word ABCCED 输出true示例 2 输入board [[A,B,C,E],[S,F,C,S],[A,D,E,E]], word SEE 输出true示例 3 输入board [[A,B,C,E],[S,F,C,S],[A,D,E,E]], word ABCB 输出false提示 m board.lengthn board[i].length1 m, n 61 word.length 15board 和 word 仅由大小写英文字母组成 一、模式识别 1.棋盘格回溯法 棋盘格问题回溯法典型应用用回溯算法 层间word内顺序访问 层内board遍历或上一个字母上下左右 无需找到所有结果找到第一个结果后返回 2.搜索方式 1.word首字母在board中二维遍历 2.word内层间顺序访问剩余字母分别搜索上一个字母的上下左右 3.访问过的字母不可以重复访问 二.代码实现 1.基础实现 class Solution:def get_candidate(self, board, visited, i, j):candidate []if i - 1 0 and not visited[i - 1][j]:candidate.append((board[i - 1][j], i - 1, j))if j - 1 0 and not visited[i][j - 1]:candidate.append((board[i][j - 1], i, j - 1))if i 1 len(board) and not visited[i 1][j]:candidate.append((board[i 1][j], i 1, j))if j 1 len(board[0]) and not visited[i][j 1]:candidate.append((board[i][j 1], i, j 1))return candidatedef backtracking(self, board, word, visited, start_idx, i, j):if start_idx len(word):return Trueif start_idx 0:for i in range(len(board)):for j in range(len(board[i])):if board[i][j] word[0]:visited[i][j] Trueif self.backtracking(board, word, visited, 1, i, j):return Truevisited[i][j] Falseelse:for ch, a, b in self.get_candidate(board, visited, i, j):if ch word[start_idx]:visited[a][b] Trueif self.backtracking(board, word, visited, start_idx 1, a, b):return Truevisited[a][b] Falsereturn Falsedef exist(self, board: List[List[str]], word: str) - bool:visited [[False] * len(board[0]) for _ in range(len(board))]return self.backtracking(board, word, visited, 0, -1, -1) start_idx记录访问顺序 visited用于标记访问过的字母 首字母二维遍历board 剩余字母层间顺序访问层内访问上一个字母在board中的上下左右 耗时2000ms-4000ms 2.启发式搜索 class Solution:def get_candidate(self, board, i, j):candidate []if i - 1 0 and board[i - 1][j]:candidate.append((board[i - 1][j], i - 1, j))if j - 1 0 and board[i][j - 1]:candidate.append((board[i][j - 1], i, j - 1))if i 1 len(board) and board[i 1][j]:candidate.append((board[i 1][j], i 1, j))if j 1 len(board[0]) and board[i][j 1]:candidate.append((board[i][j 1], i, j 1))return candidatedef backtracking(self, board, word, start_idx, i, j):if start_idx len(word):return Trueif start_idx 0:for i in range(len(board)):for j in range(len(board[i])):if board[i][j] word[0]:board[i][j] Falseif self.backtracking(board, word, 1, i, j):return Trueboard[i][j] word[0]else:for ch, a, b in self.get_candidate(board, i, j):if ch word[start_idx]:board[a][b] Falseif self.backtracking(board, word, start_idx 1, a, b):return Trueboard[a][b] word[start_idx]return Falsedef exist(self, board: List[List[str]], word: str) - bool:# visited [[False] * len(board[0]) for _ in range(len(board))]cntCounter(c for row in board for c in row)if not cntCounter(word):return Falseif cnt[word[-1]]cnt[word[0]]:wordword[::-1]return self.backtracking(board, word, 0, -1, -1) 在提交排行榜中看到的启发式搜索 思路主要搜索开销都在第一步的board的遍历于是从第一步开刀 实现逻辑如果尾端字母在board出现频率低于首端则word反序 计算开销直接降到0ms-3ms
http://www.hkea.cn/news/14420742/

相关文章:

  • 网站建设做网站好吗三明住房建设局网站
  • 简洁手机导航网站模板下载安装重大违法建设项目举报网站
  • 国产成年做视频网站wordpress文章怎么写
  • 网站建设优化服务信息招商外包公司
  • server2003网站建设福建高速公路建设指挥部网站
  • 网站做多个页面简述企业网站建设的目的
  • dede旅游网站源码中国建设工程信息网站
  • 做网站如何通过流量赚钱吗photoshop手机版
  • 冠县网站建设价格北京网络运营推广团队
  • 重庆企业网站开发服务五十一团 黑龙江生产建设兵团知青网站
  • 个人博客网站开发开发手机端网站模板
  • html做网站例子制作古城西安网页
  • 百度一对一解答长沙seo优化推广
  • 地图网站怎么做的中国互联网网站性能
  • 唐山网站建设怎么样wordpress大图模板
  • 易联网站制作设计制作公司网站
  • 人力资源网站怎么建设营销型网站的缺点
  • 网教网站源码网站做多久
  • 公司网站怎么做关键字wordpress 标签seo插件
  • 江苏平台网站建设价位成都市建设领域网站咨询电话
  • 北京 建公司网站要多少钱纸箱 东莞网站建设
  • 最漂亮网站电商网站开发平台一
  • 企业网站托管收费标准深信服对单一网站做限速
  • 专门做视频的网站有哪些不写代码门户网站建设
  • 现在还有没有做任务的网站wordpress 亲子主题
  • 河南网站推广夜间直播平台哪个好用
  • 网站关键词的分类搭建网站的六个基本步骤流程
  • php网站的优点交互设计软件有哪些
  • pc 手机网站 微站淘宝推广平台有哪些
  • 怎么建公司免费网站企业网站建立意义何在