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

g家intern电面

🔗
 楼主| williamdotyang 2016-10-27 11:10:53 | 只看该作者
全局:
bananapancake 发表于 2016-10-27 10:59
谢谢!恭喜楼主了!祝match成功!

没事!借吉言~
回复

使用道具 举报

🔗
sccnju 2016-10-27 11:36:54 | 只看该作者
全局:
多谢楼主分享经验哈。第一题DP我写了一个2D版本的,就是dp[i][j]存着从i到j的最大值和最小值。能不能帮忙看一下差不多是不是这个意思哈?多谢哈

  1. def max_subarray(nums):
  2.     n = len(nums)
  3.     dp = [[{"min":float("inf"), "max":-float("inf")} for i in range(n)] for j in range(n)]
  4.     ans = -1
  5.     for i in range(n):
  6.         dp[i][i]["min"] = nums[i]
  7.         dp[i][i]["max"] = nums[i]

  8.     for i in range(n):
  9.         for j in range(i+1,n):
  10.             dp[i][j]["min"] = min(dp[i][j-1]["min"], nums[j])
  11.             dp[i][j]["max"] = max(dp[i][j-1]["max"], nums[j])
  12.             min_tmp = dp[i][j]["min"]
  13.             max_tmp = dp[i][j]["max"]
  14.             if dp[i][j]["min"] != float("inf") and min_tmp*2 > max_tmp:
  15.                
  16.                 ans = max(ans, j-i+1)
  17.    
  18.     return ans
复制代码
回复

使用道具 举报

🔗
 楼主| williamdotyang 2016-10-27 11:52:36 | 只看该作者
全局:
sccnju 发表于 2016-10-27 11:36
多谢楼主分享经验哈。第一题DP我写了一个2D版本的,就是dp[j]存着从i到j的最大值和最小值。能不能帮忙看一 ...

是这个意思 我看着没啥问题
回复

使用道具 举报

🔗
sccnju 2016-10-27 12:11:00 | 只看该作者
全局:
williamdotyang 发表于 2016-10-27 11:52
是这个意思 我看着没啥问题

多谢哈。然后优化空间就是这二维数组里面的i其实都没有用直接去掉就行了哈?

回复

使用道具 举报

🔗
cookielee77 2016-10-27 12:27:50 | 只看该作者
全局:
williamdotyang 发表于 2016-10-27 10:46
min(array) 其实是等于 min(min(array), array[j]). max的情况同理。所以可以用O(1)时间填充一个二维dp m ...

但是brutal force的话难道不也是O(n^2)?
回复

使用道具 举报

🔗
minggr 2016-10-27 12:59:37 | 只看该作者
全局:
第一题,Time O(n^2), Space O(1)

  1. int longest_subarray(vector<int> &nums)
  2. {   
  3.     int max_len = 0;

  4.     int n = nums.size();

  5.     for (int i = 0; i < n; i++) {
  6.         int min_num = nums[i];
  7.         int max_num = nums[i];

  8.         for (int j = i + 1; j < n; j++) {
  9.             min_num = min(min_num, nums[j]);
  10.             max_num = max(max_num, nums[j]);
  11.          
  12.             if (min_num * 2 > max_num)
  13.                 max_len = max(max_len, j-i+1);
  14.         }
  15.     }
  16.    
  17.     return max_len;
  18. }

  19. int main()
  20. {   
  21.     vector<int> nums = {1, 3, 4, 4, 3, 5, 5, 6};
  22.    
  23.     cout << longest_subarray(nums) << endl;

  24.     return 0;
  25. }
复制代码
回复

使用道具 举报

🔗
jacky841102 2016-10-27 13:12:41 | 只看该作者
全局:
第一题可以O(n)? 用min/max queue, 类似two poitners
  1. from collections import deque
  2. class minMaxQueue:
  3.     def __init__(self):
  4.         self.minq = deque()
  5.         self.maxq = deque()
  6.         self.q = deque()

  7.     def push(self, i):
  8.         self.q.append(i)

  9.         while self.maxq and self.maxq[-1] < i:
  10.             self.maxq.pop()
  11.         self.maxq.append(i)

  12.         while self.minq and self.minq[-1] > i:
  13.             self.minq.pop()
  14.         self.minq.append(i)

  15.     def pop(self):
  16.         i = self.q.popleft()

  17.         if self.maxq[0] == i:
  18.             self.maxq.popleft()

  19.         if self.minq[0] == i:
  20.             self.minq.popleft()
  21.         return i

  22.     def getMin(self):
  23.         if self.minq:
  24.             return self.minq[0]

  25.     def getMax(self):
  26.         if self.maxq:
  27.             return self.maxq[0]

  28. def solve(array):
  29.     q = minMaxQueue()
  30.     ans = 0
  31.     for n in array:
  32.         q.push(n)
  33.         while q.q and q.getMin() * 2 <= q.getMax():
  34.             q.pop()
  35.         ans = max(ans, len(q.q))
  36.     return ans
复制代码
回复

使用道具 举报

🔗
whdawn 2016-10-27 13:12:59 | 只看该作者
全局:
看名字感觉好眼熟                 
回复

使用道具 举报

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

使用道具 举报

🔗
lic10 2016-10-27 13:28:27 | 只看该作者
全局:
楼主能具体说说第二轮吗?谢谢!
回复

使用道具 举报

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

本版积分规则

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