从旧金山人口变化,谈湾区买房地段选择

一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
H1B/绿卡遥遥无期
又不想回国
来东南亚最大的互联网集团工作?
码农求职神器Triplebyte:
不用海投
内推多家公司面试
坐标湾区
Games Startup
招聘游戏开发工程师
游戏初创公司招聘工程师、UIUX Designer和游戏策划
查看: 471|回复: 1
收起左侧

[Leetcode] 诚心请教Surrounded Region这题 急在线等

[复制链接] |试试Instant~ |关注本帖
我的人缘0
xiaoxiao0801 发表于 2016-1-21 06:02:24 | 显示全部楼层 |阅读模式
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?Sign Up 注册获取更多干货

x
本帖最后由 xiaoxiao0801 于 2016-1-21 06:08 编辑

大家好 我一直做不出 Leetcode[130] Surrounded Region这题 知道地里高手如云 诚心欢迎大神们指点

我写了个解法用了它的一个test case, 跑的结果和它expected的是一样的但是跑了50多秒泥萌知道我有多渣勒嘛快来尽情的鄙视我 然后我不知道其他test case能不能过去

我想的是 对于board里每个格子[i,j] 先不管它是不是在边界上只要它是'O'并未被访问过 就BFS访问它的上下左右(检查上下左右是否越界 挑出没越界并且为'O'并且没被访问过的 押入队列) 一路上记录能访问到的所有格子 等访问完了 如果这个记录中有在边界上的点 不管;否则把记录里所有格子全改成'X' 这样对于board里所有点都访问下

先跪谢!
  1. import Queue
  2. class Solution(object):
  3.         def solve(self,board):
  4.                 if board==[]:
  5.                         return
  6.                 row,col=len(board),len(board[1])
  7.                 visited=[[False]*col for i in range(row)]
  8.                 for i in range(row):
  9.                         for j in range(col):
  10.                                 if board[i][j]=="O" and visited[i][j]==False:
  11.                                         tmp=[]
  12.                                         if self.helper(board,visited,i,j,row,col,tmp)==True:
  13.                                                 for t in tmp:
  14.                                                         board[t[0]]=board[t[0]][:t[1]]+"X"+board[t[0]][t[1]+1:]

  15.         def helper(self,board,visited,i,j,row,col,tmp):
  16.                 flag=True
  17.                 q =        Queue.Queue()
  18.                 q.put([i,j])
  19.                 while q.empty()==False:
  20.                         [i,j]=q.get()
  21.                         visited[i][j]=True
  22.                         tmp.append([i,j])
  23.                         if i==0 or i==row-1 or j==0 or j==col-1:
  24.                                 flag=False
  25.                         for ajac in [[i-1,j],[i+1,j],[i,j-1],[i,j+1]]:
  26.                                 if ajac[0]>=0 and ajac[0]<row and ajac[1]>=0 and ajac[1]<col and board[ajac[0]][ajac[1]]=="O" and visited[ajac[0]][ajac[1]]==False:
  27.                                         q.put(ajac)
  28.                 return flag
复制代码

上一篇:请问数据方面的工作需要刷题么 拜托大家回答一下了
下一篇:Cracking the Coding Interview, 6th Edition
我的人缘0
SophieCheng 发表于 2016-1-21 06:11:30 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
昨天做完这道题,我想的是,不能成为surrounded region的会有个缺口到四周,所以BFS先从四条边找 'O' , 然后把所及的 ’O‘ 设为visited; 最后扫一遍,发现没有visited的’ O‘ 改成 X, 这些 O 就是被包围起来的
回复 支持 反对

使用道具 举报

全球28万学生4.7分推荐
游客
请先登录

本版积分规则

提醒:发帖可以选择内容隐藏,部分板块支持匿名发帖。请认真读完以下全部说明:

■隐藏内容方法: [hide=200]你想要隐藏的内容比如面经[/hide]
■意思是:用户积分低于200则看不到被隐藏的内容
■可以自行设置积分值,不建议太高(200以上太多人看不到),也不建议太低(那就没必要隐藏了)
■建议只隐藏关键内容,比如具体的面试题目、涉及隐私的信息,大部分内容没必要隐藏。
■微信/QQ/电子邮件等,为防止将来被骚扰甚至人肉,以论坛私信方式发给对方最安全。
■匿名发帖的板块和方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

关闭

一亩三分地推荐上一条 /3 下一条

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2018-6-18 07:48

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表