leetcode--Surrounded Regions

本文介绍了一个二维棋盘中'O'被'X'围困的问题,并提供了一段Java代码解决方案。该问题要求将所有被'X'包围的'O'区域中的'O'翻转为'X'。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'.

A region is captured by flipping all 'O's into 'X's in that surrounded region.

For example,

X X X X
X O O X
X X O X
X O X X

After running your function, the board should be:

X X X X
X X X X
X X X X
X O X X
[java]  view plain  copy
  1. public class Solution {  
  2.     public void solve(char[][] board) {  
  3.         int rows = board.length;  
  4.         if(rows<=0return;   
  5.         int cols = board[0].length;  
  6.         if(cols<=0return;   
  7.         boolean flag[][] = new boolean[rows][cols];  
  8.         ArrayList<Integer> queue_x = new ArrayList<Integer>();  
  9.         ArrayList<Integer> queue_y = new ArrayList<Integer>();  
  10.         boolean OK = true;  
  11.         int[] dir_x = new int[]{-1,1,0,0};  
  12.         int[] dir_y = new int[]{0,0,-1,1};  
  13.         for(int i=0;i<rows;i++){  
  14.             for(int j=0;j<cols;j++){  
  15.                 if(board[i][j]=='O'&&!flag[i][j]){                    
  16.                     int low = 0;  
  17.                     int high = 1;  
  18.                     OK = true;  
  19.                     queue_x.add(i);  
  20.                     queue_y.add(j);                   
  21.                     while(low<high){                                               
  22.                         for(int k=0;k<4;k++){  
  23.                             int x = queue_x.get(low)+dir_x[k];  
  24.                             int y = queue_y.get(low)+dir_y[k];  
  25.                             if(x>=0&&x<rows&&y>=0&&y<cols){  
  26.                                 if(!flag[x][y]&&board[x][y]=='O'){  
  27.                                     queue_x.add(x);  
  28.                                     queue_y.add(y);  
  29.                                     flag[x][y]=true;  
  30.                                     high++;  
  31.                                 }                                 
  32.                             }else{  
  33.                                 OK = false;  
  34.                             }                                 
  35.                         }                     
  36.                         low++;  
  37.                     }  
  38.                     if(OK){  
  39.                         for(int k=0;k<queue_x.size();k++){  
  40.                             board[queue_x.get(k)][queue_y.get(k)] = 'X';  
  41.                         }                         
  42.                     }  
  43.                     queue_x.clear();queue_y.clear();  
  44.                 }  
  45.             }  
  46.         }         
  47.     }  
  48. }  


原文链接http://blog.youkuaiyun.com/crazy__chen/article/details/46524447

基于Spring Boot搭建的一个多功能在线学习系统的实现细节。系统分为管理员和用户两个主要模块。管理员负责视频、文件和文章资料的管理以及系统运营维护;用户则可以进行视频播放、资料下载、参与学习论坛并享受个性化学习服务。文中重点探讨了文件下载的安全性和性能优化(如使用Resource对象避免内存溢出),积分排行榜的高效实现(采用Redis Sorted Set结构),敏感词过滤机制(利用DFA算法构建内存过滤树)以及视频播放的浏览器兼容性解决方案(通过FFmpeg调整MOOV原子位置)。此外,还提到了权限管理方面自定义动态加载器的应用,提高了系统的灵活性和易用性。 适合人群:对Spring Boot有一定了解,希望深入理解其实际应用的技术人员,尤其是从事在线教育平台开发的相关从业者。 使用场景及目标:适用于需要快速搭建稳定高效的在线学习平台的企业或团队。目标在于提供一套完整的解决方案,涵盖从资源管理到用户体验优化等多个方面,帮助开发者更好地理解和掌握Spring Boot框架的实际运用技巧。 其他说明:文中不仅提供了具体的代码示例和技术思路,还分享了许多实践经验教训,对于提高项目质量有着重要的指导意义。同时强调了安全性、性能优化等方面的重要性,确保系统能够应对大规模用户的并发访问需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值