79. 单词搜索(JS实现)

【Leetcode】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
给定 word = “SEE”, 返回 true
给定 word = “ABCB”, 返回 false
提示:
board 和 word 中只包含大写和小写英文字母。
1 <= board.length <= 200
1 <= board[i].length <= 200
1 <= word.length <= 10^3

2 思路

这道题的思路主要还是考察深度优先遍历 + 回溯, 主要思路就是遍历二维数组每个元素,当发现元素和目标单词的首字母相同时,就进入递归,沿该元素的四个方向进行依次查找,用一个散列表标记已经访问过的位置,在递归过程中,若找到则返回true,若未找到,则递归回来时,要重置散列表状态

3代码

/**
 * @param {character[][]} board
 * @param {string} word
 * @return {boolean}
 */
var exist = function(board, word) {

    let m = board.length;
    let n = board[0].length;

    if (m * n < word.length) return false;

    let map = {};

    for (let i=0; i<m; i++) {
        for (let j=0; j<n; j++) {
            if (board[i][j] === word[0]) {
                if (search(i,j,0)) return true;
            }
        }
    }

    return false;


    function search(i, j, nextIndex) {
		//单词已遍历完,则表明已经找到了
        if (nextIndex === word.length) {
            return true;
        };

        let key = `${i}-${j}`;
		//数组越界、已经访问过、对应字母不相等时直接返回false
        if (i < 0 || j < 0 || i >= m || j >=n || map[key] || board[i][j] !== word[nextIndex]) { 
            return false;
        }

        map[key] = true;

        let success = search(i+1, j, nextIndex + 1)  //沿4个方向寻找
        || search(i-1, j, nextIndex + 1)
        || search(i, j+1, nextIndex + 1)
        || search(i, j-1, nextIndex + 1);

        map[key] = success;  //失败时要重置位置状态

        return success;
    }
};
79. 单词搜索 链接 题目. 难度: middle 解答: 这是一个典型的深度优先查找算法 package main import fmt func deepSearch(travelled map[int]bool, board [][]byte, i, j int, word string) bool { if len(word) == 0 { return true } if i >= len(board) || i = len(board[0]) || j < 0 { return false } pos := i*len(board[0]) + j if travelled[ 立即下载

相关推荐

JS查找英文文章中出现频率最高的单词

主要为大家详细介绍了JS查找英文文章中出现频率最高的单词,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

【LeetCode-中等】79. 单词搜索(详解)

java:回溯算法

丨康有为丨的博客 615

【研路导航】重庆大学计算机保研面试真题分享交流

在保研的道路上,面试是非常重要的一环。轻保研提供了成功保研到重庆大学的学长的计算机保研面试的部分真题及详细解答!Q 快速排序和合并排序:快速排序(quicksort) 和合并排序(merge sort) 两种方法都将输入的待排序序列划分为2个子序列,并且递归地对所得的两个子序列分别排序。请阐述快速排序及合并排序两种算法之间的主要区别。

gradlight的博客 1588

[css3] 动画案例---会呼吸的圆

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Do

qq_14993591的博客 2470

Xilinx DMA IP核心配置与实战解析

本文介绍了Xilinx DMA IP核在直接寄存器模式下的配置与工作流程。DMA通过AXI4-Lite接口接收指令,实现内存与数据流之间的高速传输,无需CPU介入。文章详细说明了开发环境配置、IP参数设置(包括地址位宽、数据宽度等关键参数)以及寄存器操作流程。通过仿真分析,展示了读操作中AXI4接口的突发传输机制,包括地址、长度和突发大小的配置。文中还提供了寄存器地址映射表、信号定义等关键信息,为DMA IP核的应用开发提供了实用参考。

weixin_37688766的博客 884

Habitat安装全网最详细教程,手把手带你跑通example.py(全网唯一)

全网最详细具身智能仿真平台habitat的安装教程

shannanshouyin的博客 2756

Leetcode 79. 单词搜索 (每日一题 20210720 同类型题)

给定一个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 示...

BUPT-WT的博客 523

Circos图审美拯救计划:用TBtools复刻Nature级共线性分析图谱

本文针对Circos图在共线性分析中的审美提升问题,提供了一套基于TBtools的完整优化方案。通过构建和谐的色彩体系、精细控制信息层布局以及模仿顶刊构图逻辑,详细讲解了如何从配色、透明度、标签显示到高级参数设置,将默认图表升级为具有高级学术美感的Nature级图谱,助力研究者提升论文图表质量。

cherry的博客 911

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

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

qq_40222433的博客 859

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

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

weixin_29231027的博客 538

【技术分享】语音多模态LLM越狱

语音多模态LLM越狱攻击作为一种新兴安全威胁,揭示了多模态模型在语音输入场景下的脆弱性。尽管已有多种攻击方法被提出,但其具体实现步骤、防御措施的有效性及行业影响等问题仍需进一步探索[9]。未来研究应聚焦于改进模型架构、开发针对性防御策略,并评估语音输入越狱攻击的实际危害。只有通过全面理解这些挑战,才能为多模态智能系统的安全性提供更可靠的保障。说到语音多模态LLM越狱的具体实现步骤,这其实是一个复杂且多层次的过程🧐。首先,攻击者需要深入分析目标模型的响应模式和安全机制,找出可能的漏洞点。

qq_29883477的博客 1261

[JavaScript 刷题] 搜索 - 单词搜索, leetcode 79

[JavaScript 刷题] 搜索 - 单词搜索, leetcode 79 github repo 地址: https://github.com/GoldenaArcher/js_leetcode,Github 的目录 大概 会更新的更勤快一些。 题目地址:79. Word Search 题目 如下: Given an m x n grid of characters board and a string word, return true if word exists in the grid. The

GoldenaArcher的博客 350

Python二级考试题目及答案解析(含刷题软件)

答案:A 解析:print()函数可以在屏幕上输出指定的字符串或变量,input()函数用于从键盘获取用户输入,int()函数可以将指定的字符串或浮点数转换为整数,float()函数可以将指定的字符串或整数转换为浮点数。答案:A 解析:int()函数可以将字符串转换为整数,float()函数可以将字符串转换为浮点数,str()函数可以将任意类型的变量转换为字符串,bool()函数可以将任意类型的变量转换为布尔值。

YOLO 1万+

【Leetcode 346/700】79. 单词搜索 【中等】 回溯深度搜索JavaScript版

【Leetcode 346/700】79. 单词搜索 【中等】 回溯深度搜索JavaScript版 1.题目 n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 示例 1: 输入:board = [["A","B","C","E"],["S","F","C","S"],["A","

weixin_43779957的博客 328

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【LeetCode刷题记录】79. 单词搜索(JS解法)

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

C_greenbird的博客 686

WINCC7.3破解文件

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

JavaScript / TypeScript for LeetCode (108)

是差点运气,可我一直在努力! 当前进程: 开始时间:2020.6.27 结束时间:undefined GitHub仓库:https://github.com/Cundefined/JavaScript-or-TypeScript-for-LeetCode 1、题目要求 ( LeetCode-第79题 ) 单词搜索 2、解题思路 方法:深度优先搜索 类似【200、岛屿数量】 1、创建记录【是否访问】标志的数组 2、遍历二维数组,调用递归函数 3、创建dfs函数: 3.1、递归结束条件 3.2、边

weixin_47771057的博客 180

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LeetCode79-单词搜索

一生波澜壮阔,不屈不挠。用在褚老身上不足为奇,可以说他是中国改革开放以来第一代企业家的代表,人生经历过两次巅峰,也经历过足以让人就此沉沦的低谷,但褚老依然是以一种坚韧不拔的大毅力挺过来了,放在全中国也难找几个人与之匹配。尤其是古稀之年依然能以一腔热血来创业,其实干精神是我辈之楷模! 给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字...

飞奔的菜猪的博客 313

JS Leetcode 79.单词搜索

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

yuki_bird的博客 439

【Leetcode刷题篇】leetcode79 单词搜索

给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 解题思路:DFS即回溯法 package com.lcz.leetcode; // 单词搜索 public class Leetcode79 { class Solution { public boolean exist(char[][] board, String word) { .

Mind_programmonkey的博客 510

【每日算法】LeetCode 79. 单词搜索

摘要: LeetCode 79题要求判断给定单词是否能在二维网格中通过相邻单元格连续匹配。解题采用DFS+回溯算法,从每个起点出发递归搜索四个方向,通过访问标记避免重复使用单元格,及时回溯剪枝优化效率。时间复杂度O(mn3^L),空间O(L+mn)(可优化至O(L))。该算法是解决约束性路径搜索问题的标准方法,适用于前端场景如可视化连线验证或游戏逻辑实现。

LYFlied的博客 946

leetcode 79. 单词搜索

''' leetcode 79. 单词搜索 给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 递归+回溯 ''' class Solution: def exist(self, board, word: str) -> bool:...

WYXHAHAHA123的博客 371

Leetcode 79. Word Search 单词搜索

Leetcode 79. Word Search 单词搜索 标签: Leetcode 题目地址: https://leetcode-cn.com/problems/word-search/ 题目描述 给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用...

CoderWangSon 324
上一篇: 77. 组合(JS实现)
下一篇: 80. 删除排序数组中的重复项 II(JS实现)
PAT-python-zjw
博客等级 码龄10年 381粉丝 408原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值