博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
130. Surrounded Regions
阅读量:6905 次
发布时间:2019-06-27

本文共 1629 字,大约阅读时间需要 5 分钟。

130. Surrounded Regions

题目

Given a 2D board containing 'X' and 'O' (the letter 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 XX O O XX X O XX O X XAfter running your function, the board should be:X X X XX X X XX X X XX O X X

解析

  • 核心思想:只有边界上'O'的位置组成的片区不会被'X'包围。因此先对边界上的'O'遍历之后暂存为''。非''的'O'即被'X'包围了。
  • 此题考查DFS/BFS的思想,就像走迷宫问题,入口和出口位置不同,DFS/BFS的效率不一样,递归式的DFS 会出现stackoverflow 或者run time的问题

  • bug :发现leetcode系统必须检查输入为空的情况!否则出现"Runtime Error Message:reference binding to null pointer of type 'struct value_type' Last executed input: [] 之类的错误!!!

class Solution {public:    void bfs(vector
> &board,int cur_i,int cur_j,int row,int col) { if(board[cur_i][cur_j]!='O') return; board[cur_i][cur_j]='*'; queue
> q; q.push(make_pair(cur_i,cur_j)); while(!q.empty()) { int i=q.front().first; int j=q.front().second; q.pop(); //board[i][j]='*'; if(i-1>=0&&board[i-1][j]=='O') { board[i-1][j]='*'; q.push(make_pair(i-1,j)); } if(i+1
=0&&board[i][j-1]=='O') { board[i][j-1]='*'; q.push(make_pair(i,j-1)); } if(j+1
> &board) { //bfs if (board.empty()) //bug :发现leetcode系统必须检查输入为空的情况! return; int row=board.size(); int col=board[0].size(); if(row==0||col==0) return; for(int i=0;i
  • 这样考虑时间复杂度
for(int i=0;i

题目来源

转载地址:http://ssgdl.baihongyu.com/

你可能感兴趣的文章
全闪数据中心的数据缩减攻略
查看>>
中国首次实现超400公里的抗黑客攻击量子密钥分发
查看>>
Fuchsia对Android到底意味着什么?
查看>>
联想大数据企业级分析平台(LEAP)通过数据中心联盟认证
查看>>
苹果会开放iOS操作系统吗?30年前已错过一次
查看>>
融合数据保护产品评估三要素
查看>>
Qunar用户画像构建策略及应用实践
查看>>
话说数据中心里的新IP技术
查看>>
PHP7曝出三个高危0-day漏洞,还有一个仍未修复
查看>>
React Native Ubuntu简介
查看>>
透过“虚火”洞悉物联网的价值
查看>>
大数据和学生创业有什么关系
查看>>
视频点播播放器如何实现加密下载?
查看>>
Facebook将推“市场”功能:用户可相互买卖东西
查看>>
俄国防部组建信息作战部队 应对西方网络-心理攻击
查看>>
《Android应用开发攻略》——第2章 设计成功的应用程序 2.1 导言:设计成功的Android应用程序...
查看>>
法国物联网公司Sigfox 获1.6亿美元E轮融资
查看>>
Bob大叔和Jim Coplien对TDD的论战
查看>>
不以规矩不成方圆:Digital Ocean也删除了他们的数据库
查看>>
SharePoint 数据库迁移步骤
查看>>