Leetcode面试经典150题-79.搜索单词

news2024/12/23 7:16:24

题目比较简单,回溯最基础的题,记得除非覆盖,否则一定要恢复现场就行

解法都在代码里,不懂就留言或者私信

class Solution {
    public boolean exist(char[][] board, String word) {
        int m = board.length; 
        int n = board[0].length;
        if(m * n < word.length()) {
            return false;
        }
        /**转换成字符数组 */
        char[] wordArr = word.toCharArray();
        for(int i = 0; i < board.length; i++) {
            for(int j = 0; j < board[i].length; j++) {
                /**任何一个成功,直接返回,这里加一下等于判断提高效率*/
                if(process(board, wordArr, i , j, 0)) {
                    return true;
                }
            }
        }
        return false;
    }

    public boolean process(char[][] board, char[] wordArr, int row, int col, int curIndex) {
        if(curIndex == wordArr.length) {
            return true;
        }
        if(row < 0 || row >= board.length || col < 0 || col >= board[row].length || board[row][col] != wordArr[curIndex]) {
            return false;
        }
        /**用过的标记成0(数字0)并在此之前记录原始值,用于失败后的恢复现场*/
        char orginChar = board[row][col];
        board[row][col] = '0';
        /**上下左右都试一下 */
        boolean up = process(board, wordArr, row - 1, col, curIndex + 1);
        boolean right = process(board, wordArr, row, col + 1, curIndex + 1);
        boolean down = process(board, wordArr, row + 1, col, curIndex + 1);
        boolean left = process(board, wordArr, row, col - 1, curIndex + 1);
        /**任何一个成功就是成功,不再继续尝试 */
        if(up || right || down || left) {
            return true;
        }
        /**如果失败了下个需要重新从这个位置开始尝试,这里要恢复现场 */
        board[row][col] = orginChar;
        /**失败了返回false */
        return false;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2136362.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置相机的图像剪切(ROI)功能(C语言)

Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置相机的图像剪切&#xff08;ROI&#xff09;功能&#xff08;C语言&#xff09; Baumer工业相机Baumer工业相机的图像剪切&#xff08;ROI&#xff09;功能的技术背景CameraExplorer如何使用图像剪切&#xff08;ROI&#xff0…

公司搬迁至外地:选择新办资质还是迁移资质?

当企业面临搬迁&#xff0c;尤其是跨区域搬迁时&#xff0c;资质管理成为企业运营策略中的一个关键议题。企业需要在新办资质和迁移资质之间做出选择&#xff0c;这关系到企业的合规性、市场竞争力和业务连续性。本文将探讨这两种选择的考量因素&#xff0c;以及如何根据企业的…

cityengine修改纹理创建模型

数据准备 1、建筑shp面数据 2、安装好cityengine软件 3、Arcgis(非必要) 效果 1、新建工程 路径不要放C盘下 2、复制规则文件和纹理 安装软件后,这些素材在电脑上能找到,默认位置是:C:\Users{计算机名}\Documents\CityEngine\Default Workspace\ESRI.lib,如果找不到…

售后质保卡小程序系统开发制作方案

售后质保卡小程序系统作为一种数字化解决方案&#xff0c;通过微信小程序&#xff0c;为顾客提供更加便捷、高效、环保的质保服务体验。售后质保卡系统是集质保信息查询、报修申请、服务进度跟踪、顾客反馈等功能于一体的质保卡小程序。 目标顾客 1. 终端顾客&#xff1a;直接…

昇思MindSpore AI框架MindFormers实践3:ChatGLM3-6B对一段文字进行提取

MindSpore和MindFormers安装参见&#xff1a;昇思AI框架实践1:安装MindSpoe和MindFormers_miniconda 安装mindspore-CSDN博客 使用了MindSpore2.2和MindFormers1.0 支持的模型&#xff1a; KeyError: "model must be in odict_keys([gpt2, gpt2_lora, gpt2_xl, gpt2_xl…

Linux:开源世界的璀璨明珠

一、Linux 概述 Linux 是一种自由和开放源代码的类 Unix 操作系统&#xff0c;诞生于 1991 年&#xff0c;由芬兰大学生 Linus Torvalds 开发。它的起源离不开 Unix 家族&#xff0c;1969 年肯・汤普森设计了早期 Unix 的源头&#xff0c;到 1973 年丹尼斯・里奇等人以 C 语言…

基于多种智能优化算法优化BP神经网络的数据回归预测

基于多种智能优化算法优化BP神经网络的数据回归预测&#xff0c;主要是指通过引入一些优化算法来改进传统的BP&#xff08;反向传播&#xff09;神经网络的训练过程&#xff0c;以提高其在回归预测任务中的性能。以下是这个过程的基本原理&#xff1a; 代码原理及流程 1. BP神…

Java的发展史与前景

&#x1f308;个人主页&#xff1a;Yui_ &#x1f308;Linux专栏&#xff1a;Linux &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &#x1f308;数据结构专栏&#xff1a;数据结构 &#x1f308;C专栏&#xff1a;C 文章目录 0. Java语言的发展史1.概述1.1 什么是Java1.2 …

k8s 中的 Service 简介

前言 k8s 集群中的每一个 Pod 都有自己的 IP 地址&#xff0c;那么是不是有 IP 了&#xff0c;访问起来就简单了呢&#xff0c;其实不然。 因为在 k8s 中 Pod 不是持久性的&#xff0c;摧毁重建将获得新的 IP&#xff0c;客户端通过会变更 IP 来访问显然不合理。另外 Pod 还经…

JavaScript --函数作用域变量的使用规则(局部和访问)

访问规则&#xff0c;就近原则 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"w…

江西金融发展集团通过ZStack Zaku容器云推进数字化转型

江西金融发展集团选择ZStack Zaku容器云平台作为其数字化转型的关键技术支撑&#xff0c;以期构建一个创新的金融服务平台&#xff0c;实现业务流程的自动化和智能化&#xff0c;同时推出符合市场需求的新型金融产品。 产融结合综合金融服务集团 江西金融发展集团股份有限公司…

延迟退休,程序员的你准备好了吗?

随着社会的进步&#xff0c;人们的寿命也逐渐延长&#xff0c;65岁被认为是人们应该退休的年龄。然而&#xff0c;对于那些已经经历了35岁危机的程序员来说&#xff0c;65岁依然让他们感觉年轻。 在这种情况下&#xff0c;该如何应对已板上钉钉的延迟退呢&#xff1f;本文将探…

OZON电子产品大幅增长,OZON跨境PS5销量激增

Top1 存储卡 Карта памяти Canvas Select Plus 128 ГБ 商品id&#xff1a;1548303593 月销量&#xff1a;2131 欢迎各位卖家朋友点击这里&#xff1a; &#x1f449; D。DDqbt。COm/74rD 免费体验 随着智能手机和平板电脑的普及&#xff0c;用户对于存储空…

C++模拟实现priority_queue(仿函数)

目录 优先级队列仿函数 优先级队列 优先队列是一种容器适配器&#xff0c;根据严格的弱排序标准&#xff0c;它的第一个元素总是它所包含的元素中最大的。类似于堆&#xff0c;在堆中可以随时插入元素&#xff0c;并且只能检索最大堆元素(优先队列中位于顶部的元素) 学习优先级…

Qt 学习第十天:标准对话框 页面布局

系统标准对话框 错误对话框 //错误对话框connect(createPro, &QAction::triggered, this, []{//参数1 父亲 参数2 标题 参数3 对话框内显示文本内容 。。。QMessageBox::critical(this, "报错!", "没加头文件!");}); 【运行结果】 信息对话框 co…

虚拟背景扣像SDK解决方案,电影级抠像技术

美摄科技&#xff0c;作为影像技术领域的领航者&#xff0c;凭借其革命性的虚拟背景抠像SDK解决方案&#xff0c;正以前所未有的方式&#xff0c;重新定义电影级背景抠像技术&#xff0c;让直播与视频制作迈入全新境界。 电影级抠像技术&#xff0c;重塑视觉盛宴 美摄科技的虚…

【运维】自动化运维工具,使用 Ansible 进行开发环境配置管理(本地/远程,brew/scoop/yum,docker/packer/openstack)

【运维】自动化运维工具&#xff0c;使用 Ansible 进行开发环境配置管理&#xff08;本地/远程&#xff0c;brew/scoop/yum&#xff0c;docker/packer/openstack&#xff09; 文章目录 1、什么是 Ansible&#xff0c;如何安装2、使用 ansible 自动配置本地开发环境&#xff08;…

水滴式多功能粉碎机:粉碎中草药的好帮手

水滴式中草药粉碎机&#xff0c;顾名思义&#xff0c;其设计灵感源自自然界中水滴的柔和与力量。它摒弃了传统粉碎机粗犷的粉碎方式&#xff0c;采用低速研磨技术&#xff0c;模拟水滴穿透岩石的细腻与持久&#xff0c;对中草药进行温和而深入的粉碎。这种技术不仅保留了药材中…

编写注册接口与登录认证

编写注册接口 在UserController添加方法 PostMapping("/login")public Result login(Pattern(regexp "^\\S{5,16}$") String username,Pattern(regexp "^\\S{5,16}$") String password){ // 根据用户名查询用户User loginUser userS…

锁表导致系统挂了,谨慎DDL操作

作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验&#xff0c; Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、MySQL、PG、 高斯及Greenplum备份恢复&#xff0c; 安装迁移&#xff0c;性能优化、故障…