楼主: OaPhoneOnsite
跳转到指定楼层
上一主题 下一主题
收起左侧

狗家昂赛

🔗
bigbearlake 2017-2-17 16:17:28 | 只看该作者
全局:

是每个时间点都从新统计一遍?
回复

使用道具 举报

🔗
wangbd 2017-2-19 12:03:06 | 只看该作者
全局:
请问lz 第五题是怎么做的,我记得之前有人在地里发过这个题,不知道有哪位大神还有链接吗?lz能详细解释一下是怎么做的吗?谢谢啦
回复

使用道具 举报

🔗
 楼主| OaPhoneOnsite 2017-2-19 14:40:59 | 只看该作者
全局:
bigbearlake 发表于 2017-2-17 16:17
是每个时间点都从新统计一遍?

每个时间点往前24小时之内的
回复

使用道具 举报

🔗
 楼主| OaPhoneOnsite 2017-2-19 14:41:36 | 只看该作者
全局:
wangbd 发表于 2017-2-19 12:03
请问lz 第五题是怎么做的,我记得之前有人在地里发过这个题,不知道有哪位大神还有链接吗?lz能详细解释一 ...

我用的是类似Insert Interval的思路,感觉不是最优解
回复

使用道具 举报

🔗
jedihy 2017-2-22 03:17:42 | 只看该作者
全局:
请问楼主第一个是把矩阵里面的1改成到0的最短距离吗?
回复

使用道具 举报

🔗
jedihy 2017-2-22 03:38:14 | 只看该作者
全局:
第一题follow up是不是所有的0一起做BFS?


  1. from collections import deque
  2. class Solution(object):
  3.     # Do BFS for all one's
  4.     def minDist(self, matrix):
  5.         def bfs(i, j, matrix):
  6.             directions = [(-1, 0), (1, 0), (0, -1), (0, 1)]
  7.             queue = deque([(i, j, 0)])
  8.             visited = set()
  9.             while queue:
  10.                 pi, pj, depth = queue.popleft()
  11.                 for di, dj in directions:
  12.                     ni, nj = pi + di, pj + dj
  13.                     if 0 <= ni < len(matrix) and 0 <= nj < len(matrix[0]) and (ni, nj) not in visited:
  14.                         visited |= {(ni, nj)}
  15.                         if matrix[ni][nj] == 0:
  16.                             matrix[i][j] = depth + 1
  17.                             return
  18.                         queue.append((ni, nj, depth + 1))

  19.         for i in range(len(matrix)):
  20.             for j in range(len(matrix[0])):
  21.                 if matrix[i][j] == 1:
  22.                     bfs(i, j, matrix)
  23.         return matrix

  24.     def minDistFollowUp(self, matrix):
  25.         queue = deque([])
  26.         directions = [(-1, 0), (1, 0), (0, -1), (0, 1)]
  27.         for i in range(len(matrix)):
  28.             for j in range(len(matrix[0])):
  29.                 if matrix[i][j] == 1:
  30.                     matrix[i][j] = -1

  31.         for i in range(len(matrix)):
  32.             for j in range(len(matrix[0])):
  33.                 if matrix[i][j] == 0:
  34.                     queue.append((i, j))

  35.         while queue:
  36.             i, j = queue.popleft()
  37.             for di, dj in directions:
  38.                 ni, nj = i + di, j + dj
  39.                 if 0 <= ni < len(matrix) and 0 <= nj < len(matrix[0]) and matrix[ni][nj] == -1:
  40.                     matrix[ni][nj] = matrix[i][j] + 1
  41.                     queue.append((ni, nj))
  42.         return matrix

  43. solver = Solution()
  44. m = [[0,1,0,0,1], [1,1,1,0,0], [1,1,0,0,1],[0,0,1,0,1]]
  45. print m
  46. print solver.minDist(m)
  47. print solver.minDistFollowUp(m)
复制代码
回复

使用道具 举报

🔗
 楼主| OaPhoneOnsite 2017-2-28 16:29:19 | 只看该作者
全局:
jedihy 发表于 2017-2-22 03:17
请问楼主第一个是把矩阵里面的1改成到0的最短距离吗?

这个应该可以和面试官商量,google的习惯一般是不改变输入
回复

使用道具 举报

🔗
pipihaha 2017-3-3 13:31:23 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
pipihaha 2017-3-3 13:36:01 | 只看该作者
全局:
第三题应该可以用找skyline类似的方法解。先对所有投票按时间排序,然后用24小时的区间(实际上就是两根时间线,skyline只需要一根线来扫描)来扫描投票,记录下投票数最大值变化的时间(最后形成一个按时间排序的数组,每个元素两个成员 <time, ID>). 给定时间查投票最高的ID就是在这个数组上做binay search。
回复

使用道具 举报

🔗
zli82015 2017-3-6 11:26:31 | 只看该作者
全局:
2.2 是leetcode哪一题啊? 记得做过,想不起来了。
回复

使用道具 举报

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

本版积分规则

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