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

广州在线网站制作创建网站需要什么条件

广州在线网站制作,创建网站需要什么条件,打代码怎么做网站,多语种网站建设方案算法-单词搜索 II 1 题目概述 1.1 题目出处 https://leetcode.cn/problems/word-search-ii/description/?envTypestudy-plan-v2&envIdtop-interview-150 1.2 题目描述 2 DFS 2.1 解题思路 每个格子往上下左右四个方向DFS,拼接后的单词如果在答案集中&…

算法-单词搜索 II

1 题目概述

1.1 题目出处

https://leetcode.cn/problems/word-search-ii/description/?envType=study-plan-v2&envId=top-interview-150

1.2 题目描述

在这里插入图片描述
在这里插入图片描述

2 DFS

2.1 解题思路

每个格子往上下左右四个方向DFS,拼接后的单词如果在答案集中,则记录下来。

同时为了避免DFS时往回找,需要记录下已访问记录。

2.2 代码

class Solution {private Set<String> wordSet = new HashSet<>();private List<String> resultList = new LinkedList<>();public List<String> findWords(char[][] board, String[] words) {for (String word : words) {wordSet.add(word);}StringBuilder sb = new StringBuilder();char[][] visitSet = new char[board.length][board[0].length];for (int i = 0; i < board.length; i++) {for (int j = 0; j < board[0].length; j++) {dfs(i, j, board, sb, visitSet);}}return resultList;}private void dfs(int i, int j, char[][] board, StringBuilder sb, char[][] visitSet) {if (sb.length() > 10) {return;}if (visitSet[i][j] == 1) {return;}visitSet[i][j] = 1;sb.append(board[i][j]);String currentStr = sb.toString();if (wordSet.contains(currentStr)) {resultList.add(currentStr);wordSet.remove(currentStr);}if (i > 0) {dfs(i - 1, j, board, sb, visitSet);}if (i < board.length - 1) {dfs(i + 1, j, board, sb, visitSet);}if (j > 0) {dfs(i, j - 1, board, sb, visitSet);}if (j < board[0].length - 1) {dfs(i, j + 1, board, sb, visitSet);}sb.deleteCharAt(sb.length() - 1);visitSet[i][j] = 0;}
}

2.3 时间复杂度

在这里插入图片描述
O(M * N * 4^10) 字符串最多10

2.4 空间复杂度

O(10)

3 DFS+Trie树

3.1 解题思路

3.2 代码

class Solution {private Set<String> wordSet = new HashSet<>();private List<String> resultList = new LinkedList<>();public List<String> findWords(char[][] board, String[] words) {for (String word : words) {wordSet.add(word);}StringBuilder sb = new StringBuilder();char[][] visitSet = new char[board.length][board[0].length];for (int i = 0; i < board.length; i++) {for (int j = 0; j < board[0].length; j++) {dfs(i, j, board, sb, visitSet);}}return resultList;}private void dfs(int i, int j, char[][] board, StringBuilder sb, char[][] visitSet) {if (sb.length() > 10) {return;}if (visitSet[i][j] == 1) {return;}visitSet[i][j] = 1;sb.append(board[i][j]);String currentStr = sb.toString();if (wordSet.contains(currentStr)) {resultList.add(currentStr);wordSet.remove(currentStr);}if (i > 0) {dfs(i - 1, j, board, sb, visitSet);}if (i < board.length - 1) {dfs(i + 1, j, board, sb, visitSet);}if (j > 0) {dfs(i, j - 1, board, sb, visitSet);}if (j < board[0].length - 1) {dfs(i, j + 1, board, sb, visitSet);}sb.deleteCharAt(sb.length() - 1);visitSet[i][j] = 0;}
}

3.3 时间复杂度

在这里插入图片描述

4 DFS+Trie树 优化

4.1 解题思路

4.2 代码

class Solution {private List<String> resultList = new LinkedList<>();private TrieNode trieNode = new TrieNode();static class TrieNode {private TrieNode[] trieNodes = new TrieNode[26];public boolean isWord = false;public void insert(String word) {if (word.length() == 0) {isWord = true;return;}int index = word.charAt(0) - 'a';if (null == trieNodes[index]) {trieNodes[index] = new TrieNode();}trieNodes[index].insert(word.substring(1));}}public List<String> findWords(char[][] board, String[] words) {for (String word : words) {trieNode.insert(word);}StringBuilder sb = new StringBuilder();char[][] visitSet = new char[board.length][board[0].length];for (int i = 0; i < board.length; i++) {for (int j = 0; j < board[0].length; j++) {dfs(i, j, board, sb, visitSet, trieNode);}}return resultList;}private void dfs(int i, int j, char[][] board, StringBuilder sb, char[][] visitSet, TrieNode ct) {if (sb.length() > 10) {return;}if (visitSet[i][j] == 1) {return;}visitSet[i][j] = 1;sb.append(board[i][j]);ct = ct.trieNodes[board[i][j] - 'a'];if (null != ct) {if (ct.isWord) {resultList.add(sb.toString());ct.isWord = false;} if (i > 0) {dfs(i - 1, j, board, sb, visitSet, ct);}if (i < board.length - 1) {dfs(i + 1, j, board, sb, visitSet, ct);}if (j > 0) {dfs(i, j - 1, board, sb, visitSet, ct);}if (j < board[0].length - 1) {dfs(i, j + 1, board, sb, visitSet, ct);}}sb.deleteCharAt(sb.length() - 1);visitSet[i][j] = 0;}
}

4.3 时间复杂度

在这里插入图片描述

参考文档

http://www.ds6.com.cn/news/101625.html

相关文章:

  • wordpress for windows河北seo技术
  • 青岛网站如何制作网站优化主要优化哪些地方
  • 上海做网站那家公司好私域营销
  • 西安定制网站建设公司哪家好济南优化网络营销
  • Javaweb网站建设网站推广排名公司
  • 企业网站建设找智恒网络找竞价托管公司
  • 上海公司网站建设方案深圳网站优化公司
  • 有什么教做维c甜品的网站网络营销环境宏观微观分析
  • 如何生成一个网站舆情监测系统排名
  • 柳州企业网站制作百度seo排名优化公司
  • 漯河市建设局网站seo公司的选上海百首网络
  • 外贸网站服务器品牌策划案
  • 颐高养生园网站建设外链网站大全
  • 外国人做的网站如何创建公司网站
  • 一级av做爰片不卡免费网站今天的新闻联播
  • 外卖平台做网站合肥网络推广服务
  • 程序员做赌博类网站360免费建站教程
  • 网站的关键词怎么选择营销模式有哪些 新型
  • 制作自己的网站 域名怎么弄百度快速收录接口
  • wordpress苏醒主题网址seo分析
  • 动态网站设计是什么bing收录提交
  • wordpress 二开北京关键词seo排名怎么选
  • 深圳做兼职的网站友链交易平台源码
  • 江苏网站建设企业成人电脑培训班附近有吗
  • 建自己的o2o网站要多少钱设计师经常用的网站
  • 如何做网站赚流量钱网站建设报价
  • 怎么选择网站建设公司北京百度推广优化排名
  • 北京展览网站建设温州seo公司
  • 不做百度推广网站关键词被屏蔽app开发成本预算表
  • 东莞网站建设公司 h5新闻发布会新闻通稿