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

Google Onsite面经

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

使用道具 举报

🔗
hj867955629 2015-11-10 08:25:39 | 只看该作者
全局:
lianlu 发表于 2015-11-10 07:28
怎么由two array推广到k stacks? 是先全部读出来存在array里了?

stack只是设置一个环境,告诉你只能依次读吧,也可以先把stack读到array里呀
回复

使用道具 举报

🔗
lianlu 2015-11-10 08:33:55 | 只看该作者
全局:
hj867955629 发表于 2015-11-10 08:25
stack只是设置一个环境,告诉你只能依次读吧,也可以先把stack读到array里呀

我觉得这才是楼主的解法(二维dp)。
  1. public static int getmaxsum(int[][] nums, int k) {
  2.                 int[][] dp = new int[nums.length][k + 1];// the max sum using first i
  3.                                                                                                         // array, and j numbers
  4.                 for (int j = 0; j <= k; j++) {
  5.                         for (int i = 0; i < dp.length; i++) {
  6.                                 // dp[i][j] = max(dp[i-1][l] + sum{});
  7.                                 dp[i][j] = Math.max(i - 1 >= 0 ? dp[i - 1][j] : 0, j - 1 >= 0 ? dp[i][j - 1] : 0);
  8.                                 int len = nums[i].length;
  9.                                 int sum = 0;
  10.                                 for (int l = 0; j - l - 1 >= 0 && l < len; l++) {
  11.                                         sum += nums[i][l];
  12.                                         dp[i][j] = Math.max(dp[i][j], (i - 1 >= 0 ? dp[i - 1][j - l - 1] : 0) + sum);
  13.                                 }

  14.                         }
  15.                 }

  16.                 return dp[nums.length - 1][k];
  17.         }
复制代码
回复

使用道具 举报

🔗
wyjzhi89 2015-11-10 08:38:31 | 只看该作者
全局:
我觉得第一题可以先使用一个二维的数组存储起来的stack 从第0位到第i位的sum。 然后用dp[m][k] 代表从第一个stack到第m个stack 选择了k个元素的最大值。因为每个stack选择的都是最前端的元素,所以dp[m][k]=max(sum[j]+dp[m-1][k-j])( j from 0 to k ) .这样就可以求出来k个stack中的最大值。
回复

使用道具 举报

🔗
abcd1992719g 2015-11-10 08:38:47 | 只看该作者
全局:
请教楼主 第一题k stacks怎么做的
回复

使用道具 举报

🔗
hj867955629 2015-11-10 08:48:03 | 只看该作者
全局:
lianlu 发表于 2015-11-10 08:33
我觉得这才是楼主的解法(二维dp)。

你这个确实更好啦,学习了

补充内容 (2015-11-10 08:48):
请问怎么贴代码贴成你这样的?
回复

使用道具 举报

🔗
eeyyabc 2015-11-10 09:49:45 | 只看该作者
全局:
楼主能把这个问题仔细讲讲吗?What if the two array are very large (10TB). A - MergeSort。是说把两个array分别external sort之后再一段一段load进内存比较?谢啦
回复

使用道具 举报

🔗
litJordan 2015-11-10 11:17:09 | 只看该作者
全局:
zado 发表于 2015-11-10 05:45
是个美国小哥问的?

是的哈!听声音像个白人小哥!应该是同一个人!风格一模一样!
回复

使用道具 举报

🔗
maomaoxiong 2015-11-10 13:41:44 | 只看该作者
全局:
2Sum smaller的思路是什么?我现在想到的方法是sort。有O(n)的解法么?

回复

使用道具 举报

🔗
 楼主| zado 2015-11-10 22:48:17 | 只看该作者
全局:
maomaoxiong 发表于 2015-11-10 13:41
2Sum smaller的思路是什么?我现在想到的方法是sort。有O(n)的解法么?

就是leetcode 3sum smaller的变形,先sort array,然后左右两个指针往中间走。
回复

使用道具 举报

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

本版积分规则

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