<DFS & BFS> 130 127
130. Surrounded Regions
BFS: 把所有边界上的O先换成A(标记),再深度遍历周围的点。
最后把O换成X(表示不符合要求),所有的A换回O
class Solution {
    public void solve(char[][] board) {
        if(board.length == 0 || board[0].length == 0) return;
        int m = board.length;
        int n = board[0].length;
        for(int i = 0; i < m; i++){
            dfs(board, i, 0);
            dfs(board, i, n - 1);
        }
        for(int j = 1; j < n - 1; j++){
            dfs(board, 0, j);
            dfs(board, m - 1, j);
        }
        for(int i = 0; i < m; i++){
            for(int j = 0; j < n; j++){
                if(board[i][j] == 'O') board[i][j] = 'X';
                if(board[i][j] == 'A') board[i][j] = 'O';
            }
        }
    }
    private void dfs(char[][] board, int i, int j){
        if(i < 0 || i >= board.length || j < 0 || j >= board[0].length) return;
        if(board[i][j] == 'X' || board[i][j] == 'A') return;
        board[i][j] = 'A';
        dfs(board, i - 1, j);
        dfs(board, i + 1, j);
        dfs(board, i, j - 1);
        dfs(board, i, j + 1);
    }
}
127. Word Ladder
BFS:queue,使用BFS时必须用到的队列,Set用于放置wordList。按当前
class Solution {
    public int ladderLength(String beginWord, String endWord, List<String> wordList) {
        Set<String> set = new HashSet<>(wordList);
        Queue<String> queue = new LinkedList<>();
        queue.add(beginWord);
        int level = 0;
        while(!queue.isEmpty()){
            int size = queue.size();
            for(int i = 0; i < size; i++){
                String cur = queue.remove();
                char[] wordUnit = cur.toCharArray();
                if(cur.equals(endWord)) return level + 1;
                for(int j = 0; j < cur.length(); j++){
                    char temp = wordUnit[j];
                    for(char c = 'a'; c <= 'z'; c++){
                        wordUnit[j] = c;
                        String s = new String(wordUnit);
                        if(set.contains(s)){
                            queue.add(s);
                            set.remove(s);
                        }
                    }
                    wordUnit[j] = temp;
                }
            }
            level++;
        }
        return 0;
    }
}
<DFS & BFS> 130 127的更多相关文章
- [LeetCode] 130. Surrounded Regions_Medium tag: DFS/BFS
		Given a 2D board containing 'X' and 'O' (the letter O), capture all regions surrounded by 'X'. A reg ... 
- DFS/BFS+思维 HDOJ 5325 Crazy Bobo
		题目传送门 /* 题意:给一个树,节点上有权值,问最多能找出多少个点满足在树上是连通的并且按照权值排序后相邻的点 在树上的路径权值都小于这两个点 DFS/BFS+思维:按照权值的大小,从小的到大的连有 ... 
- 【DFS/BFS】NYOJ-58-最少步数(迷宫最短路径问题)
		[题目链接:NYOJ-58] 经典的搜索问题,想必这题用广搜的会比较多,所以我首先使的也是广搜,但其实深搜同样也是可以的. 不考虑剪枝的话,两种方法实践消耗相同,但是深搜相比广搜内存低一点. 我想,因 ... 
- ID(dfs+bfs)-hdu-4127-Flood-it!
		题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4127 题目意思: 给n*n的方格,每个格子有一种颜色(0~5),每次可以选择一种颜色,使得和左上角相 ... 
- HDU 4771 (DFS+BFS)
		Problem Description Harry Potter has some precious. For example, his invisible robe, his wand and hi ... 
- DFS/BFS视频讲解
		视频链接:https://www.bilibili.com/video/av12019553?share_medium=android&share_source=qq&bbid=XZ7 ... 
- POJ 3083 -- Children of the Candy Corn(DFS+BFS)TLE
		POJ 3083 -- Children of the Candy Corn(DFS+BFS) 题意: 给定一个迷宫,S是起点,E是终点,#是墙不可走,.可以走 1)先输出左转优先时,从S到E的步数 ... 
- [LeetCode]695. 岛屿的最大面积(DFS/BFS)、200. 岛屿数量(DFS/BFS待做/并差集待做)
		695. 岛屿的最大面积 题目 给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合.你可以假设二维矩阵的四个边缘都被 ... 
- POJ2308连连看dfs+bfs+优化
		DFS+BFS+MAP+剪枝 题意: 就是给你一个10*10的连连看状态,然后问你最后能不能全部消没? 思路: 首先要明确这是一个搜索题目,还有就是关键的一点就是连连看这个游戏是 ... 
随机推荐
- Pycharm2019.2.4专业版激活
			Pycharm2019.2.4专业版激活 IDE是开发者创建程序时使用的的软件包,它通过简单的用户界面集成多个高度关联的组件,从而最大化提升编程体验和生产效率:本质上,IDE是一种改进代码创建.测试和 ... 
- 探索ASP.Net Core 3.0系列六:ASP.NET Core 3.0新特性启动信息中的结构化日志
			前言:在本文中,我将聊聊在ASP.NET Core 3.0中细小的变化——启动时记录消息的方式进行小的更改. 现在,ASP.NET Core不再将消息直接记录到控制台,而是正确使用了logging 基 ... 
- Win10导出查看删除已安装的证书
			1.控制面板中搜索证书 2.点击管理用户证书或管理计算机证书,即可查看所有安装好的证书 3.双击即可查看证书,右键证书即可删除无效的证书 4.搜索证书,比如百度用到的根证书是GlobalSign Ro ... 
- PHP 中的关于 trait 的简单
			什么是 trait 看看 PHP 官网的介绍. 自 PHP 5.4.0 起,PHP 实现了一种代码复用的方法,称为 trait. Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制.T ... 
- PHP高级进阶梳理
			基础篇 1.深入理解计算机系统 2.现代操作系统 3.C程序设计语言 4.C语言数据结构和算法 5.Unix环境高级编程 6.TCP/IP网络通信详解 7.Java面向对象编程 8.Java编程思想 ... 
- Zabbix 监控阿里云RDS
			简介 Zabbix 监控阿里云RDS数据库.主要通过阿里云提供的API来进行监控. 需要在阿里云获取“用户AccessKey”指定ID,进行RDS监控. 环境 服务:Zabbix 3.0.28.zab ... 
- DAX 第四篇:CALCULATE详解
			CALCULATE()函数是DAX中最复杂的函数,用于计算由指定过滤器修改的上下文中的表达式. CALCULATE(<expression>,<filter1>,<fil ... 
- PIE调用Python获得彩色直方图
			前段时间我一直在研究PIE SDK与Python的结合,因为在我的开发中,我想获取一张图片的统计直方图,虽然在SDK中有提供关于直方图的类接口(如IStatsHistogram 接口.Histogra ... 
- css3伪类和伪元素你都懂了吗
			什么是伪类? 伪类用于定义元素的特殊状态. 例如,它可用于: 当用户将鼠标悬停在元素上时为其设置样式 访问和未访问的链接不同样式 在获得焦点时设置元素的样式 伪类的语法 后代选择器匹配作为指定元素后代 ... 
- Arduino leonardo+esp8266-01作服务端与APP进行数据通信
			esp8266-01调试 一.硬件设备 1.USB转TTL 2.esp8266-01 3.杜邦线 4.电脑 二.接线 ESP8266 TTL-USB VCC VCC(最好选择3.3V) CH_PD V ... 
