码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 算法训练第六十三天|被围绕的区域


    130. 被围绕的区域 - 力扣(LeetCode)

    总结:和第1020道题目很相似,不过自己照着前面那道的题目的思路来并没有解决问题,这和自己没有完全理解题目意思也有一定关系,题目的意思是只要一片区域内有一个和边界相交的话这一片区域都是不用变成'X'的,自己利用之前的思路不能做到bug free,看完题解后觉得真妙,并没有设置利用visited数组,而是直接先从四个边界判断起,边界中如果有为'O'的地方,则利用广搜或者深搜搜索出这一片区域则这一片区域都是不用改变,其余的再根据题意改成'X'即可。

    代码:

    1. class Solution {
    2. public:
    3. int dir[4][2] = {-1, 0, 0, -1, 1, 0, 0, 1};
    4. void dfs(vectorchar>>& board, int x,int y)
    5. {
    6. board[x][y] = 'A';
    7. for(int i = 0;i < 4;i++)
    8. {
    9. int nextx = x + dir[i][0];
    10. int nexty = y + dir[i][1];
    11. if (nextx < 0 || nextx >= board.size() || nexty < 0 || nexty >= board[0].size()) continue;
    12. if(board[nextx][nexty] == 'X' || board[nextx][nexty] == 'A') continue;
    13. dfs (board, nextx, nexty);
    14. }
    15. return;
    16. }
    17. void solve(vectorchar>>& board) {
    18. int n = board.size();
    19. int m = board[0].size();
    20. for(int i = 0;i < n;i++)
    21. {
    22. if(board[i][0] == 'O') dfs(board,i, 0);
    23. if(board[i][m - 1] == 'O') dfs(board, i, m - 1);
    24. }
    25. for (int j = 0; j < m; j++) {
    26. if (board[0][j] == 'O') dfs(board, 0, j);
    27. if (board[n - 1][j] == 'O') dfs(board, n - 1, j);
    28. }
    29. for (int i = 0; i < n; i++) {
    30. for (int j = 0; j < m; j++) {
    31. if (board[i][j] == 'O') board[i][j] = 'X';
    32. if (board[i][j] == 'A') board[i][j] = 'O';
    33. }
    34. }
    35. }
    36. };

  • 相关阅读:
    【Mybatis】INSERT INTO 遇到NULL怎么处理?
    【系统稳定性 - 测试】2.2 谈谈Monkey老化测试场景的ANR问题分析
    Unity中Shader法线贴图(上)
    简单神经网络算法原理,人工神经网络算法原理
    【Postman接口测试】第三节.第二节.Postman界面功能介绍(下)
    docker&kubernets中级篇(十)
    【数组的中心位置】python实现-附ChatGPT解析
    Sulfo-Cy5 羧酸,Sulfo-Cyanine5 carboxylic acid,花青素荧光染料Cy5标记羧酸
    MySQL日志(undo log 和 redo log 实现事务的原子性/持久性/一致性)
    C++笔记之std::forward
  • 原文地址:https://blog.csdn.net/zhangke_EX/article/details/133149655
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号