📣 Back to School开学季 - VIP通行证5折优惠!蓝莓、Offer多多同步优惠
楼主: 密探阿泰
跳转到指定楼层
上一主题 下一主题
收起左侧

谷狗电面背靠背(求大米!!!)

🔗
cheerier 2019-2-19 06:10:47 | 只看该作者
全局:
请问lz,第一题return的是最短距离,还是X和Y的坐标?
回复

使用道具 举报

🔗
cheerier 2019-2-19 06:47:08 | 只看该作者
全局:
写了个第一题大家说的BFS的解法,但现在只能return 最短距离,而且觉得代码有点长。 请教大家怎么return最短距离的X,Y的坐标值, 谢谢!
  1. def manhattanXYDist(grid):
  2.         if not grid or not grid[0]:
  3.                 return
  4.         rows = len(grid)
  5.         cols = len(grid[0])
  6.         qX = []
  7.         qY = []
  8.         count = 0
  9.         deltaX = [0,0,-1,1]
  10.         deltaY = [-1,1,0,0]
  11.         for i in range(rows):
  12.                 for j in range(cols):
  13.                         if grid[i][j] == 'X':
  14.                                 qX.append(i)
  15.                                 qY.append(j)

  16.         while qX and qY:
  17.                 tempX = qX
  18.                 tempY = qY
  19.                 qX = []
  20.                 qY = []
  21.                 count += 1
  22.                 while tempX and tempY:
  23.                         curX = tempX.pop(0)
  24.                         curY = tempY.pop(0)
  25.                         for i in range(4):
  26.                                 nbX = curX + deltaX[i]
  27.                                 nbY = curY + deltaY[i]

  28.                                 if 0 <= nbX < rows and 0<=nbY < cols:
  29.                                         if grid[nbX][nbY] == '0':
  30.                                                 grid[nbX][nbY] = count
  31.                                         if grid[nbX][nbY] == 'Y':
  32.                                                 return count
  33.                                         qX.append(nbX)
  34.                                         qY.append(nbY)
  35.         return -1

  36. grid = [['X','0','X','0'],       
  37.                 ['0','0','0','0'],
  38.                 ['0','0','0','Y']]

  39. print(manhattanXYDist(grid))
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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