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

空气床面经 背靠背

🔗
匿名用户-MHTYA  2019-10-10 07:42:21 |倒序浏览

2019(10-12月) 码农类General 硕士 全职@airbnb - 网上海投 - 技术电面  | | Fail | 应届毕业生

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

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

x
求加米!求加米!谢谢大佬才面的没几天 挂了

您好!
本帖隐藏的内容需要积分高于 180 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 180 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies

评分

参与人数 6大米 +10 收起 理由
zedzedQ + 2 很有用的信息!
anguszzzz + 2 给你点个赞!
实皮果 + 1 赞一个
yunella + 1 赞一个
破风 + 2 很有用的信息!

查看全部评分


上一篇:Point 72 三轮面经
下一篇:Intuit OA+电面
推荐
Happy-zyy 2019-10-10 15:50:16 | 只看该作者
全局:
贴一个第二题的代码
顺便打印一下路径~
  1. def fun(l):
  2.     l = sorted(l, key=lambda x: x[1])
  3.     n = (l[-1][1] + 1)
  4.     dp = [0] * n
  5.     path = {}
  6.     path[0] = -1
  7.     for k, e in enumerate(l):
  8.         interest = max(dp[e[1]], dp[e[0]] + e[2])
  9.         for i in range(e[1], n):
  10.             if interest > dp[i]:
  11.                 path[interest] = k
  12.                 dp[i] = interest

  13.     ans = []
  14.     interestMax = dp[n-1]
  15.     while path[interestMax] != -1:
  16.         ans.append(l[path[interestMax]])
  17.         interestMax -= l[path[interestMax]][2]

  18.     print(ans[::-1])
  19.     return dp[n - 1]


  20. a = [[2,4,5],[4,8,12],[10,12,4]]
  21. print(fun(a))
复制代码


评分

参与人数 2大米 +4 收起 理由
betterztt + 2 给你点个赞!
zedzedQ + 2 很有用的信息!

查看全部评分

回复

使用道具 举报

🔗
zedzedQ 2019-10-12 04:07:39 | 只看该作者
全局:
Happy-zyy 发表于 2019-10-10 15:50
贴一个第二题的代码
顺便打印一下路径~
[mw_shl_code=python,true]def fun(l):

代码第11行 path[interest] = k 这里有点不明白 如果interest是dp[e[1]] 更大的话,那就不是用的现在的e了,是不是应该加个 if dp[e[0]] + e[2] > dp[e[1]]: path[interest] = k? 已加分 求指教
回复

使用道具 举报

🔗
Happy-zyy 2019-10-12 10:36:09 | 只看该作者
全局:
zedzedQ 发表于 2019-10-12 04:07
代码第11行 path = k 这里有点不明白 如果interest是dp[e[1]] 更大的话,那就不是用的现在的e了,是不是 ...

如果interest是和dp[e[1]]相等话,是不会进去if语句的,也就是只有当dp[e[0]] + e[2] > dp[e[1]]才会执行if
回复

使用道具 举报

🔗
zedzedQ 2019-10-12 14:00:43 | 只看该作者
全局:
Happy-zyy 发表于 2019-10-12 10:36
如果interest是和dp[e[1]]相等话,是不会进去if语句的,也就是只有当dp[e[0]] + e[2] > dp[e[1]]才会执行 ...
谢谢答疑~
回复

使用道具 举报

🔗
jinhaobu 2019-10-13 05:09:59 | 只看该作者
全局:
最早开始 和 最晚结束的那2个 必须是在结果里面, 对吗?
这个例子, [ [2, 4, 5], [3, 5, 6], [5, 7, 10], [ 4, 8, 12], [6, 8 ,10], [10, 12, 4]]  如果我加一个 [3,11, 1000], 结果依然还是[[2,4,5],[4,8,12],[10,12,4]]
回复

使用道具 举报

🔗
tonghua 2019-10-13 07:14:21 | 只看该作者
全局:
求问面经都是在哪里找的呀
回复

使用道具 举报

🔗
三亩三分地 2019-10-14 15:11:23 | 只看该作者
全局:
贡献一下我的解法,不知道对不对,欢迎指正。

dp[i]: 所有<=i 的情况里star最多的数量。初始化一个覆盖整个区间的dp数组。
先根据所有interval的end从小到大排序,然后遍历。很直观的 dp[end] = max(dp[end], dp[start] + star);
之后从这个interval的end1到下一个interval的end2的区间内,即[end1, end2],dp的值都设为dp[end]

  1. int maxStar(vector<vector<int>>& intervals) {
  2.     sort(intervals.begin(), intervals.end(), [](vector<int>& a, vector<int>& b){return a[1] < b[1] || (a[1] == b[1] && a[0] < b[0]);});
  3.     int n = intervals.back()[1];
  4.     vector<int> dp(n+1, 0);
  5.    
  6.     for (int i = 0; i < intervals.size(); i++) {
  7.         int start = intervals[i][0];
  8.         int end = intervals[i][1];
  9.         int star = intervals[i][2];

  10.         dp[end] = max(dp[end], dp[start] + star);
  11.         
  12.         if (i != intervals.size() - 1) {
  13.             for (int j = end + 1; j <= intervals[i+1][1]; j++) {
  14.                 dp[j] = dp[end];
  15.             }
  16.         }
  17.     }
  18.    
  19.     return dp[n];
  20. }
复制代码

评分

参与人数 1大米 +1 收起 理由
大象同学 + 1 很有用的信息!

查看全部评分

回复

使用道具 举报

🔗
大象同学 2019-10-22 01:02:07 | 只看该作者
全局:
上周leetcode contest 竟然出现了这道题。。。

为什么每次我一面完 leetcode contest就有原题。。。哭哭
回复

使用道具 举报

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

本版积分规则

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