📣 独立日限时特惠: VIP通行证立减$68
回复: 13
跳转到指定楼层
上一主题 下一主题
收起左侧

亚麻欧唉

全局:

2018(10-12月) MobileEng 硕士 全职@amazon - 内推 - 在线笔试  | | Other | 在职跳槽

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

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
周六做了亚麻的欧哎,第一题测试用力全国,第二题13/15。跪!

第一题,找距离最近的k个点,优先队列做做。
您好!
本帖隐藏的内容需要积分高于 150 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 150 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies

评分

参与人数 2大米 +8 收起 理由
acthy + 5 给你点个赞!
asxz87 + 3 很有用的信息!

查看全部评分


上一篇:Linkedin onsite的两个题目
下一篇:亚麻一轮 VO
推荐
signalwolf 2018-12-17 12:40:23 | 只看该作者
全局:
  1. from random import randint

  2. from bisect import bisect_left
  3. def findtarget(listA, listB, target):
  4.     # brute force (upper boundary): try each combination: m * n and find the result
  5.     # sortA, sortB: mlogm + nlogn, binary search num from A in B. mlogn
  6.     # total: mlogm + nlogn + mlogn
  7.     listA.sort()
  8.     listB.sort()
  9.     # distance
  10.     res = [float('inf'), None, None]
  11.     smallest, biggest = listB[0], listB[-1]
  12.     for val in listA:
  13.         # currVal + biggest number in B not able to bigger than target, the maxSum = currVal + biggest
  14.         if val + biggest < target:
  15.             curr = val + biggest
  16.             if target - curr < res[0]:
  17.                 res = [target - curr, val, biggest]
  18.             continue

  19.         # currVal + smallest number in B exceed target: we shall stop here
  20.         if val + smallest > target:
  21.             break

  22.         # currVal + biggest > target and currVal + smallest < target
  23.         index = bisect_left(listB, target - val)
  24.         print index, val, listA, listB
  25.         if target - val == listB[index]:
  26.             return [val, listB[index]]
  27.         else:
  28.             curr = val + listB[index - 1]
  29.             if target - curr < res[0]:
  30.                 res = [target - curr, val, listB[index - 1]]
  31.     return res[1:]

  32. A = [randint(0, 100) for _ in xrange(10)]
  33. B = [randint(0, 100) for _ in xrange(10)]
  34. print A, B
  35. print findtarget(A, B, 100)

复制代码

评分

参与人数 1大米 +5 收起 理由
acthy + 5 给你点个赞!

查看全部评分

回复

使用道具 举报

推荐
 楼主| zenki 2018-12-18 00:45:13 | 只看该作者
全局:
GabrielaSong 发表于 2018-12-17 23:48
请问楼主明白知道是错了那两个test case吗?数组里面的数和target有范围吗? 可以是负数吗? test case会不会 ...

两个数组里面可能会有重复数字,要求返回值是【A里面的index,B里面的index】。并不是直接要A和B里面的值。我自己的解法没有handle两个数组里面都有重复的情况,所以有两个case没过。过了的case应该是两个数组里面没有重复值,或者只有一个数组里面有重复值。

评分

参与人数 1大米 +5 收起 理由
acthy + 5 给你点个赞!

查看全部评分

回复

使用道具 举报

推荐
acthy 2018-12-18 09:53:23 | 只看该作者
全局:
zenki 发表于 2018-12-18 00:45
两个数组里面可能会有重复数字,要求返回值是【A里面的index,B里面的index】。并不是直接要A和B里面的值 ...

多谢楼主!楼主说的handle两个数组里都有重复的情况的意思是,可能有多个最优解要把所有最优解都返回是吗?
回复

使用道具 举报

🔗
signalwolf 2018-12-17 12:20:05 | 只看该作者
全局:
第二题是sortA, sortB: mlogm + nlogn, binary search num from A in B. mlogn, total: mlogm + nlogn + mlogn 么?错了哪两个case啊?能看到么
回复

使用道具 举报

无效楼层,该帖已经被删除
🔗
showcode 2018-12-17 13:54:06 | 只看该作者
全局:
第二题不需要sort两个,只需要sort比较短的数组就可以。时间复杂度是O((m + n) * log (min(m, n)))
回复

使用道具 举报

🔗
acthy 2018-12-17 23:48:50 | 只看该作者
全局:
请问楼主明白知道是错了那两个test case吗?数组里面的数和target有范围吗? 可以是负数吗? test case会不会错在这里
回复

使用道具 举报

🔗
 楼主| zenki 2018-12-18 00:40:16 | 只看该作者
全局:
帖子里面大家就别贴代码了吧,三哥会来看的。二楼说的解法是对的。我自己做的时候漏掉了一些解。提交完OA我自己就想到该怎么做了,做的时候脑子不转。。。还是面的太少了
回复

使用道具 举报

🔗
 楼主| zenki 2018-12-18 00:41:40 | 只看该作者
全局:
signalwolf 发表于 2018-12-17 12:40
[mw_shl_code=python,true]from random import randint

from bisect import bisect_left

你这个解法是对的。以后别贴代码了,外国人会看
回复

使用道具 举报

🔗
signalwolf 2018-12-18 04:08:39 | 只看该作者
全局:
zenki 发表于 2018-12-18 00:41
你这个解法是对的。以后别贴代码了,外国人会看

是么,我都不知道。多谢提醒,以后不发了 :)
回复

使用道具 举报

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

本版积分规则

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