79-WordSearch

【题目】

Given a 2D board and a word, find if the word exists in the grid.

The word can be constructed from letters of sequentially adjacent cell, where "adjacent" cells are those horizontally or vertically neighboring. The same letter cell may not be used more than once.

For example,
Given board =

[
  ["ABCE"],
  ["SFCS"],
  ["ADEE"]
]

word = "ABCCED", -> returns true,
word = "SEE", -> returns true,
word = "ABCB", -> returns false.

【analyze】

1.类似迷宫问题,采用DFS

2.需要一个辅助二维数组,记录遍历过的位置

3.需要注意:当某个位置置为true后,没有成功后需要重置为false

【算法】public class Solution {

public boolean exist(char[][] board, String word) {
        boolean[][] visited=new boolean[board.length][board[0].length];  //用于判断一个点是否遍历过了
        for(int i=0;i<board.length;i++) {
            for(int j=0;j<board[0].length;j++) {
                if(board[i][j]==word.charAt(0)) {
                    visited[i][j]=true;
                    if(word.length()==1||search(board,i,j,word.substring(1),visited))
                        return true;
                    visited[i][j]=false;
                }
            }
        }
        return false;
    }

    public boolean search(char[][] board,int i,int j,String word,boolean[][] visited) {
        if(word.length()==0)
            return true;
        int[][] direction={{0,1},{0,-1},{1,0},{-1,0}};    //四个方向
        for(int k=0;k<direction.length;k++) {
            int ii=i+direction[k][0];
            int jj=j+direction[k][1];
            if(ii>=0&&ii<board.length&&jj>=0&&jj<board[0].length&&board[ii][jj]==word.charAt(0)&&visited[ii][jj]==false) {
                visited[ii][jj]=true;
                if(word.length()==1||search(board,ii,jj,word.substring(1),visited))
                    return true;
                visited[ii][jj]=false;
            }
        }
        return false;
    }
}
时间: 2024-10-29 19:05:36

79-WordSearch的相关文章

LeetCode39/40/22/77/17/401/78/51/46/47/79 11道 Backtracking

LeetCode 39 1 class Solution { 2 public: 3 void dfs(int dep, int maxDep, vector<int>& cand, int target) 4 { 5 if (target < 0)return; 6 if (dep == maxDep) 7 { 8 if (target == 0)//到达尾部且等于target 9 { 10 vector<int> temp; 11 for (int i = 0;

不良人【其他】手游账号交易【安卓联想79服】118级v12-淘手游交易平台

不良人[其他]手游账号交易[安卓联想79服]118级v12-淘手游交易平台 商品ID:2572227 所属游戏:不良人 客户端:其他 适用系统:其他 商品类型:账号 服务器:79 绑定邮箱:未绑定 绑定手机号:已绑定 绑定身份证:未绑定 角色等级:118 战斗力:13.6W VIP等级:12 竞技场排名:103 侠客描述:基本都有 装备描述:主要侠客橙3 账号亮点:直接上手

LeetCode66/169/79 Plus One/Majority Element /Word Search

一: Plus One 题目: Given a non-negative number represented as an array of digits, plus one to the number. The digits are stored such that the most significant digit is at the head of the list. 链接:https://leetcode.com/problems/plus-one/ 分析:就是简单的加法运算,注意进位

槽浆纱DESIGN.II.v14.01d+PulseSim.v8.79+Abaqus v6.14-5 Win64 & Linux64 2DVD

蒸槽浆纱DESIGN.II.v14.01d+PulseSim.v8.79 Abaqus v6.14-5 Win64 & Linux64 2DVD获得竞争优势    最佳的一流的企业正在利用的Abaqus FEA统一的优势,巩固他们的流程和工具,降低成本,提高效率 ,并获得竞争优势.Abaqus FEA产品套件提供了强大的.完整的解决方案,涵盖了工业应用的大范围常规 和复杂的工程问题.在汽车行业中的工程工作组能够充分考虑车辆荷载,动态振动,多体系统,冲击/碰 撞,非线性静,热耦合,并使用通用的模型

物联网操作系统HelloX V1.79发布公告

经过HelloX开发团队近半年的努力,在HelloX V1.78版本基础上,增加许多功能特性,并对V1.78版本的一些特性进行了进一步优化之后,正式形成HelloX V1.79测试版本.经相对充分的测试和验证之后,现正式发布.相关代码,已全部上载到github上(github.com/hellox-project/HelloX_OS),欢迎对HelloX感兴趣的朋友下载测试和试用,并进一步反馈问题. 除继续保持V1.78所有特性之外,V1.79版本主要对下列特性进行了支持或优化: 1.     

SCALA DT大数据梦工厂 第79讲

王家林亲授<DT大数据梦工厂>大数据实战视频“Scala深入浅出实战经典”视频.音频和PPT下载!第79讲:Scala单例深入讲解及单例背后的链式表达式腾讯微云:http://url.cn/bZPNhv百度云盘:http://pan.baidu.com/s/1eQdIzPw360云盘:http://yunpan.cn/cdm9IH3BEwnEY 访问密码 e591本节王老师讲了scala的单例object Scalaclass Java1class JVM{def method1:this.t

79.ZYNQ内部私有定时器中断

上篇文章实现了了PS接受来自PL的中断,本片文章将在ZYNQ的纯PS里实现私有定时器中断.每个一秒中断一次,在中断函数里计数加1,通过串口打印输出. *本文所使用的开发板是Miz702(兼容zedboard) PC 开发环境版本:Vivado 2015.2 Xilinx SDK 2015.2* 中断原理 中断对于保证任务的实时性非常必要,在ZYNQ里集成了中断控制器GIC(Generic Interrupt Controller).GIC可以接受I/O外设中断IOP和PL中断,将这些中断发给CP

重新想象 Windows 8.1 Store Apps (79) - 控件增强: MediaElement, Frame

[源码下载] 重新想象 Windows 8.1 Store Apps (79) - 控件增强: MediaElement, Frame 作者:webabcd介绍重新想象 Windows 8.1 Store Apps 之控件增强 MediaElement - 播放视频或音频的控件 Frame - 框架控件,用于导航内容 示例1.演示 MediaElement 的新特性MediaElementDemo.xaml <Page x:Class="Windows81.Controls.MediaEl

&#8203;老男孩教育每日一题-第79天-命令风暴:打印出001 002 003 这样的格式的数字

题目: 打印出001 002 003 这样的格式的数字 参考答案 方法1:{}生成序列 [[email protected] ~]# echo 00{1..3} 001  002  003 方法2:seq法 [[email protected] ~]# seq -w 100 001 002 003 004 005 006 007 ---- [[email protected] ~]# seq -w 100 |sed -n '1,3p' 001 002 003 此法效率不高.尽量让第一次的结果越接

装修后才知道的79件事

1. 如果家中会做饭频率很高的话,尽量放弃开放式厨房,会有油烟问题 2. 卫生间.厨房小水宝,热水来得快,使用时比较方便 3. 吸油烟机中式的比欧式的吸力更强,欧式的好看不中用. 4. 电源插座能多装尽量多装点,否则家里到处都是拖线板 5. 马桶边上一定要预留电源插座,否则卫洗丽没法装 6. 浴缸PK淋浴,二选一的话,还是建议淋浴,浴缸装好,从来也没泡过澡的不是少数.淋浴不是指淋浴房,淋浴房的玻璃擦起来还是很累的,也可以选择挂根浴帘 7. 如果有2个卫生间,装一个浴缸还是有必要的,泡泡大件衣物,