LeetCode 79.单词搜索 Java实现

Java实现 LeetCode 79 单词搜索 79. 单词搜索 给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 示例: board = [ [‘A’,‘B’,‘C’,‘E’], [‘S’,‘F’,‘C’,‘S’], [‘A’,‘D’,‘E’,‘E’] ] 给定 word = “ABCCED”... 阅读详情

题目

给定一个二维网格和一个单词,找出该单词是否存在于网格中。

单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。

示例:

board =
[
  ['A','B','C','E'],
  ['S','F','C','S'],
  ['A','D','E','E']
]

给定 word = "ABCCED", 返回 true.
给定 word = "SEE", 返回 true.
给定 word = "ABCB", 返回 false.

思路

这道题的思路是首先找出字符匹配,在后面的字符匹配中如果不符合的话,就回到上一步,查看上一步是否有其他的“路”可以走,如果没有就再回到上一步,直到无法返回时就false,在其他位置重新寻找字符匹配,如果字符匹配成功且长度等于单词的长度,那么就是最终匹配成功。

代码

递归代码

class Solution {
    public boolean exist(char[][] board, String word) {
        int cl=board.length;
        int rl=board[0].length;
        boolean[][] flag=new boolean[cl][rl];
        for(int i=0;i<cl;i++){
            for(int j=0;j<rl;j++){
                if(find(board,word,flag,i,j,0)) // 对每个位置作为第一个位置判断
                    return true;
            }
        }
        return false;
    }
    public boolean find(char[][] board,String word,boolean[][]flag,int i,int j,int index){
        int cl=board.length;
        int rl=board[0].length;
        if(word.length()==index) // 等于单词长度即匹配成功
            return true;
        if(i<0||i>=cl||j<0||j>=rl) // 下标超过字符数组的长度或小于0
            return false;
        if(flag[i][j]||word.charAt(index)!=board[i][j]) // 该字符已被用过或者该字符不匹配
            return false;
        flag[i][j]=true; // 标志字符已被访问
        boolean judge=find(board,word,flag,i-1,j,index+1)||find(board,word,flag,i+1,j,index+1)||find(board,word,flag,i,j-1,index+1)||find(board,word,flag,i,j+1,index+1);
        flag[i][j]=false; // 重载字符访问状态
        return judge;
    }
}

 

【LeetCode-算法】 79.单词搜索(Java实现) 题目 给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 示例: board = [ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E'] ] 给定 word = "ABCCED... 阅读详情

相关推荐

使用R语言(ggplot2)绘制KEGG信号通路富集气泡图

本文详细介绍了如何使用R语言的ggplot2包绘制KEGG信号通路富集气泡图,从数据预处理到高级定制技巧,帮助生物信息学研究者直观展示富集分析结果。文章涵盖了气泡图的核心绘制方法、布局优化、常见问题解决方案以及交互式可视化扩展,是进行KEGG富集分析可视化的实用指南。

weixin_42625070的博客 450

leetcode79.单词搜索 | 回溯算法 | 最通俗易懂的讲解 【java版】

单词起点一共有 n2个,单词的每个字母一共有上下左右四个方向可以选择,但由于不能走回头路,所以除了单词首字母外,仅有三种选择。深度优先搜索,我们定义这样一种搜索顺序,即先枚举单词的起点,然后依次枚举单词的每个字母。3、如果当前搜索的位置(x,y)的元素board[x][y] == word[u],则继续向四周搜索。2、从该起点出发向四周搜索单词word,并记录此时枚举到单词word的第u个位置 ( u从0开始)。1、从搜索过的位置继续搜索下一层时,需要对当前位置进行标识,表示已经搜索。

qq_40222433的博客 861

AnyGrasp实战指南:从环境配置到抓取检测与跟踪

本文详细介绍了AnyGrasp从环境配置到抓取检测与跟踪的实战指南。涵盖硬件要求、关键依赖安装避坑、抓取检测与跟踪的实战技巧,以及常见问题解决方案和性能优化建议,帮助开发者快速掌握这一高精度物体抓取检测与跟踪技术。

weixin_33712987的博客 274

Java | Leetcode Java题解之第79题单词搜索

Java | Leetcode Java题解之第79题单词搜索

m0_57195758的博客 370

LangChain学习及应用(超详细)

Model I/O 部分是与语言模型进行交互的核心组件,包括输入提示(Prompt Template)、调用模型(Model)、输出解析(Output Parser)。简单来说,就是输入、处理、输出这三个步骤。LLM 因其具有海量参数,需要花费相当的物力与时间成本进行预训练和微调,同时商用 LLM 还需要进行各种安全测试与风险评估等。因此 LLM 会存在知识滞后的问题。在专有领域,LLM 无法学习到所有的专业知识细节,因此在面向专业领域知识的提问时,无法给出可靠准确的回答。

weixin_39764056的博客 4262

Ansys Lumerical FDTD硬件配置避坑指南:从RTX 4090到A100的GPU选择实战

本文针对Ansys Lumerical FDTD仿真计算,深入分析了从消费级RTX 4090到专业级A100的GPU硬件配置选择。文章指出,选择的关键在于显存容量能否容纳仿真模型,并对比了二者在显存、双精度算力及多卡扩展性上的核心差异,为不同预算和仿真规模的用户提供了实战避坑指南与配置建议。

weixin_29196891的博客 273

java实现单词搜索

java实现单词搜索

weixin_61876893的博客 449

3D缺陷检测实战:从点云处理到工业质检优化

本文深入探讨了3D缺陷检测在工业质检中的实战应用,详细阐述了从点云处理到深度学习模型部署的完整技术链路。文章通过PCB焊点检测等实际案例,分析了3D视觉相比2D检测在识别深度、形状等缺陷方面的优势,并分享了点云滤波、分割、特征提取以及利用YOLOv5等模型进行高效检测的优化心得与落地挑战。

weixin_28358083的博客 338

leetcode79. 单词搜索

传送门 题目:给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 board = [ [‘A’,‘B’,‘C’,‘E’], [‘S’,‘F’,‘C’,‘S’], [‘A’,‘D’,‘E’,‘E’] ] 给定 word = “ABCCED”, 返回 true 给定 word = “SEE”, 返回 true 给定 word = “ABCB”, 返回 false

lonelyVM的博客 309

Mac用户必看:PD虚拟机网络初始化失败的3分钟修复指南(附详细截图)

本文针对Mac用户在Parallels Desktop(PD虚拟机)启动时遇到的“网络初始化失败”问题,提供了快速诊断与修复指南。核心原因是macOS系统更新后权限未正确授予。文章通过详细的三步修复法(关闭进程、修改配置文件、重新授权重启),帮助用户在3分钟内恢复虚拟机网络连接,并附有排查清单与预防建议。

weixin_29231027的博客 541

ArcGISPro应用指南:ArcGISPro制图全流程详解

本文介绍了基于ArcGIS Pro的地图制作基本流程,旨在帮助读者快速掌握从数据加载到地图输出的完整制图操作。文章首先简要概述了GIS技术在当今数据驱动时代的重要作用,并引出ArcGIS Pro作为专业GIS平台的优势与应用价值。随后,内容围绕地图制作的核心步骤展开,包括数据加载、布局创建、地图范围设置以及各类地图要素(如指北针、比例尺、图例、图名)的插入与样式调整。此外,还介绍了如何通过添加图形、文本及动态元素增强地图表达效果,并最终完成地图导出设置与文件输出格式的选择。

weixin_45812624的博客 1361

JAVA学习-练习试用Java实现“单词搜索 II”

输入:board = [["o","a","a","n"],["e","t","a","e"],["i","h","k","r"],["i","f","l","v"]], words = ["oath","pea","eat","rain"]该代码实现了广度优先搜索算法,并使用一个二维数组 'board' 来存储字符网格,以及一个字符串数组 'words' 来存储要查找的单词列表。输入:board = [["a","b"],["c","d"]], words = ["abcb"]

weixin_69763181的博客 341

大唐杯历届省赛押题训练(6)

考试-TD-LTE无线网络设备介绍-TD-LTE网络架构一、单选题1TD-LTE的接入网E-UTRAN由下列哪些网元组成( )。0分/1分A、RNCB、BTSC、eNode BD、Node B提交答案:B正确答案:C考点TD-LTE网络架构解析暂无试题解析二、多选题1关于LTE网络整体结构,哪些说法是正确的( )0分/2分A、E-UTRAN用E-NodeB替代原有的RNC-NodeB结构B、E-NodeB间的接口为S1接口C、各网络节点之间的接口使用IP传输。

nimo观察者 641

用Java实现单词搜索(LeetCode 79)——回溯算法详解

给定一个 `m x n` 的二维字符网格 `board` 和一个字符串 `word`,要求判断 `word` 是否存在于网格中。单词必须通过**相邻单元格内的字母按顺序连接形成**,其中“相邻”单元格指的是水平或垂直相邻的单元格。同一个单元格内的字母**不允许被重复使用**。

weixin_44435110的博客 1193

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

leetcode hot100【LeetCode 79.单词搜索】java实现

LeetCode 79.单词搜索-回溯

DataCrafter的博客 519

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

leetcode79——单词搜索——java实现

题目要求: 分析: 这道题目采用 DFS + 回溯 来做,它有四个方向来判断。设置一个visited数组,用来节点表示有没有访问过。 话说不清楚,直接上代码吧。 具体代码如下: class Solution { public boolean exist(char[][] board, String word) { int m = board.length, n = boa...

阿花的IT历程 381

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

[LeetCode]79. 单词搜索(java实现)dfs

[LeetCode]79. 单词搜索(java实现)dfs1. 题目2. 读题(需要重点注意的东西)3. 解法4. 可能有帮助的前置习题5. 所用到的数据结构与算法思想6. 总结 1. 题目 2. 读题(需要重点注意的东西) 思路: dfs搜索四个方向,用’.'标记已经选择的字符,注意恢复现场(回溯) 3. 解法 ---------------------------------------------------解法-----------------------------------------

cloud的博客 922

LeetCode 79. 单词搜索(java实现)

LeetCode 79. 单词搜索 给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 示例: board = [ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E'] ] 给定...

大白菜的博客 1019

Java实现 LeetCode 79.单词搜索(搜索)

给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 示例: board = [ [‘A’,‘B’,‘C’,‘E’], [‘S’,‘F’,‘C’,‘S’], [‘A’,‘D’,‘E’,‘E’] ] 给定 word = “ABCCED”, 返回 true...

Cypresszky的博客 224

java实现英文文件单词搜索系统_Java实现 LeetCode 79 单词搜索

79. 单词搜索给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]给定 word = “ABCCED”, 返回 true....

weixin_42122838的博客 254

leetcode 79. 单词搜索-java实现

还是dfs给定一个 m x n 二维字符网格 board 和一个字符串单词 word。如果 word 存在于网格中,返回 true;否则,返回 false。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。代码案例:输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“D”,“E”,“E”]], word = “ABCCED”输出:true。

qq_41810415的博客 272

Java实现 leetcode-79. 单词搜索

没想到其他好的方法,试试暴力解题,仔细思考想到几个难点:1.怎么找入口去遍历word,感觉需要遍历二维数组。2. 上下左右在二维数组中寻找下一个单词的时候怎样才能不去找已经找过的位置,好像用回溯可以解决。我自己感觉这个解法就是简单的模拟,看不懂的话拿出纸和笔画一画就懂了。这个题第一眼看去,居然是个中等的难度,不该是hard嘛。

zrulin的博客 368

【经典算法题】单词搜索

【经典算法题】单词搜索 Leetcode 0079 单词搜索 题目描述:Leetcode 0079 单词搜索 分析 本题的考点:递归回溯。 首先我们枚举单词的起点,一共有n×mn \times mn×m个起点,然后从该起点开始暴搜,第一次最多有4个方向可以递归,之后最多有3个方向可以递归,因为不能往回搜。 确定起点后,对于该次暴搜,怎样保证我们不搜索之前已经搜索过的位置呢?我们可以将board中相应的位置变为一个特殊字符,比如.,表示已经被搜过了,之后回溯的时候再恢复即可。 代码

weixin_42638946的博客 1786
上一篇: typescript基础知识(二)函数
下一篇: canvas+js实现坦克大战多模式版
前端小黑
博客等级 码龄9年 148粉丝 222原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值