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

day107(3.8)——leetcode面试经典150

212. 单词搜索 II

直接用最暴力的方法解的

212. 单词搜索Ⅱ

题目:

题解:

class Solution { //创建结果集 List<String> res = new ArrayList<>(); //HashSet(无序、最快)或 TreeSet(有序) //创建set容器,并将words中的元素都加入 Set<String> set = new HashSet<>(); int[][] dirs = new int[][]{{1,0},{-1,0},{0,1},{0,-1}}; //同一个单元格内的字母在一个单词中不允许被重复使用,所以创建visited数组来记录已经访问过的位置 boolean[][] visited = new boolean[15][15]; char[][] _board; public List<String> findWords(char[][] board, String[] words) { // 数据范围只有 12,且 words 中出现的单词长度不会超过 10,可以考虑使用「回溯算法」。 // 起始先将所有 words 出现的单词放到 Set 结构中,然后以 board 中的每个点作为起点进行爆搜(由于题目规定在一个单词中每个格子只能被使用一次,因此还需要一个 vis 数组来记录访问过的位置): // 如果当前爆搜到的字符串长度超过 10,直接剪枝; // 如果当前搜索到的字符串在 Set 中,则添加到答案(同时了防止下一次再搜索到该字符串,需要将该字符串从 Set 中移除)。 _board = board; for(String word:words) { set.add(word); } //遍历每一个元素,进行爆搜 for(int i=0;i<board.length;i++) { for(int j=0;j<board[0].length;j++) { if(visited[i][j]==false) { //表示已经开始访问 visited[i][j]=true; //创建StringBuilder用来更新每一步走到的字符 StringBuilder sb = new StringBuilder(); sb.append(board[i][j]); //进行爆搜 dfs(i,j,sb); //回溯 visited[i][j]=false; sb.deleteCharAt(sb.length()-1); } } } return res; } void dfs(int x, int y, StringBuilder sb) { //因为单词最长长度就是为10 if(sb.length()>10) { return ; } //判断set中是否包含该单词 if(set.contains(sb.toString())) { //将单词加入结果集中 res.add(sb.toString()); //为了防止重复加入,直接将该单词从set集合中删除 set.remove(sb.toString()); } //走下一步 for(int[] dir:dirs) { int dx=x+dir[0],dy=y+dir[1]; if(dx<0||dx>=_board.length||dy<0||dy>=_board[0].length) { continue; } if(visited[dx][dy]==true) { continue; } visited[dx][dy]=true; //改变sb sb.append(_board[dx][dy]); //继续递归 dfs(dx,dy,sb); visited[dx][dy]=false; sb.deleteCharAt(sb.length()-1); } } }
http://www.jsqmd.com/news/453770/

相关文章:

  • 计算机网络基础知识详解:MAC地址、IP地址、交换机、路由器、DNS与CDN
  • 《onlyoffice的安装和使用》
  • BOT 上线开启生态新篇:跨链桥、DEX 同步就位,BOT Chain 驶入价值捕获快车道
  • FireRed-OCR 开源:2B 小模型如何“逆袭” 300B 巨头?
  • 大模型小白指南2 -- 小龙虾(openclaw)的本地部署(不花钱!)
  • 接口结构天天变?Spring Boot 动态接收请求体的终极解决方案来了!
  • 飞书OpenClaw插件太香了!自动写文+整理表格+按评论修改保姆级教程
  • 这4个核心能力,AI永远学不会!产品经理请收好这份“保饭碗”指南!
  • OpenClaw 2.0保姆级教程:接入MemOS插件,Token消耗降72%,跨会话记忆不再忘!
  • 简单使用Claude Code实践开发一个笔记应用
  • 4-27 二维数组中每行最大值和每行和
  • A deep learning model to predict RNA-Seq expression of tumours from whole slide images
  • 2026年电商ERP系统权威榜单发布:五大服务商综合实力深度评测 - 品牌推荐
  • 【2026-02-25】连岳摘抄
  • AI Agent 学习清单I
  • ssm基于java的社区爱心捐赠系统(源码+文档+调试+vue)
  • AttributeError: type object ‘BeautifulSoup‘ has no attribute ‘__version__‘ 已解决
  • 2026 电池充放电设备厂家选型指南:从技术逻辑到工业级排名解析 - 深度智识库
  • 企业知识库投喂:四步让AI从通才变专家
  • 多无人机动态避障路径优化:基于阿尔法进化(Alpha Evolution,AE)算法的多个无人机动态避障路径规划(可以自定义无人机数量及起始点),MATLAB代码
  • 2026 广东亚马逊气候友好认证服务商 TOP5:环评公司赋能出海,绿标认证选对不踩坑 - 深度智识库
  • 2026 AI论文写作工具排行榜 TOP11(真实体验版)
  • 为什么 Cursor 打开文件总是复用一个标签?只需要一个设置立马解决
  • 探讨上海擎标公司概况,全国服务的费用大概多少钱? - mypinpai
  • 【深度学习】深度学习环境安装
  • 2026年新高中语文必背古诗文72篇PDF电子版
  • vuepython flask宠物医院管理系统
  • 个人简历面试复习-----网络篇(一)
  • 2026年 智能照明系统厂家推荐排行榜:智能照明控制系统,智能调光照明系统,智慧照明系统,灯光照明系统,专业方案与创新技术深度解析 - 品牌企业推荐师(官方)
  • F.动态规划-入门DP-打家劫舍:3186. 施咒的最大总伤害