由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - Move on了,附送一个G题
相关主题
Wildcard String Matching和怎么提高写程序能力的总结puzzle, 娱乐一下
这题有啥好思路吗发篇面经
关于leetcode 的strStr这题这题什么意思?
Google分pizza的那道题请问这题有没有公式可以直接求解?
面试中真的有人出过skyline这种题?这题怎么做?
FB的k-d tree面试题这题有解吗?
贡献一道电面题Google面试怎么这么难啊,LG很难过,我该怎么劝他呢? (转载)
发个G店面的题目如何回答这题:how to explain binary search tree to a 5 year old child
相关话题的讨论汇总
话题: dp话题: 比萨话题: 3m话题: move话题: 相邻
进入JobHunting版参与讨论
1 (共1页)
r*********n
发帖数: 4553
1
分披萨:你选一块,然后对手拿走左右各一块,一直重复直到分完整个披萨。找一个方
法,使得你得到的披萨最多。
抽象起来就是一组正整数数组,比如[2, 4, 8, 1, 3, 10]。
第一次选10, 对手拿走2,3 (注意数组是circular的)
第二次选8,对手拿走4,1
使得你得到的正整数和最大
还问两道常见的算法题,答得很轻松,又问了我的研究课题。最后出了这么一道题,面
馆说他刚看到一道题,他没想出来,于是问我的想法。我也没想出来,就给了一个笨方
法,然后分析了一下复杂度。
然后recruiter就玩失踪,大概是被G磨具了。
PS: 面馆是一三个,大家聊得还挺投机的,最后还是悲剧,这可能就是所谓的笑里藏刀
了。
N*D
发帖数: 3641
2
狗狗一般不会磨具吧,都是电锯
G****A
发帖数: 4160
3
G家现在的hire策略有点怪:题目容易,bar很高。
难道最终HC坐在一起看学校排名?

【在 r*********n 的大作中提到】
: 分披萨:你选一块,然后对手拿走左右各一块,一直重复直到分完整个披萨。找一个方
: 法,使得你得到的披萨最多。
: 抽象起来就是一组正整数数组,比如[2, 4, 8, 1, 3, 10]。
: 第一次选10, 对手拿走2,3 (注意数组是circular的)
: 第二次选8,对手拿走4,1
: 使得你得到的正整数和最大
: 还问两道常见的算法题,答得很轻松,又问了我的研究课题。最后出了这么一道题,面
: 馆说他刚看到一道题,他没想出来,于是问我的想法。我也没想出来,就给了一个笨方
: 法,然后分析了一下复杂度。
: 然后recruiter就玩失踪,大概是被G磨具了。

f*******t
发帖数: 7549
4
这题是典型的DP吧
DP[i][j] = MAX(A[i] + DP[i+2][j-1], A[j] + DP[i+1][j-2])
x*********w
发帖数: 533
5

电锯惊魂啊

【在 N*D 的大作中提到】
: 狗狗一般不会磨具吧,都是电锯
r*********n
发帖数: 4553
6
应该是用DP解,复杂度应该是O(n^2),但是你这个optimal structure不对吧,因为数
组是circular的,而且不一定要从两端开始选。

【在 f*******t 的大作中提到】
: 这题是典型的DP吧
: DP[i][j] = MAX(A[i] + DP[i+2][j-1], A[j] + DP[i+1][j-2])

f*******t
发帖数: 7549
7
circular的话感觉复杂度比n^2高

【在 r*********n 的大作中提到】
: 应该是用DP解,复杂度应该是O(n^2),但是你这个optimal structure不对吧,因为数
: 组是circular的,而且不一定要从两端开始选。

r*********n
发帖数: 4553
8
面馆给我说有一个O(n^2)算法,但他自己还没想出来........

【在 f*******t 的大作中提到】
: circular的话感觉复杂度比n^2高
f*******t
发帖数: 7549
9
呃,这题估计是ACM中等难度题,我反正是无能为力了

【在 r*********n 的大作中提到】
: 面馆给我说有一个O(n^2)算法,但他自己还没想出来........
w**********o
发帖数: 140
10
Try Minimax tree
相关主题
FB的k-d tree面试题puzzle, 娱乐一下
贡献一道电面题发篇面经
发个G店面的题目这题什么意思?
进入JobHunting版参与讨论
p******9
发帖数: 47
11
这题可以转化成 在N个数的环形数组中取不相邻的N/3(上取整),使这些数和最大。我
们可以证明任意这N/3个不相邻的数,必然能对应一种符合原题的取法。
可以用数学归纳法证明这个问题,为了方便,重新定义一下变量名,另M为我会取得到
的比萨数,则N有三种情况,即N=3M - 2 , N = 3M - 1, N = 3M,我们只证明N = 3M -
2这种情况,因为这个时候若能取到,N= 3M - 1或N = 3M 的时候肯定能取到。
(1)基础条件:若M <= 3,我们可以枚举证明以上命题成立。
(2)假设M的时候成立,我们证明M + 1的时候也成立。在M + 1的时候,将会有N = 3
(M + 1) - 2= 3M + 1块比萨。而此时M + 1块比萨之间互不相邻,则在这M + 1块比萨
间将会有M + 2个槽(考虑到比萨时环形的),我们将剩余的2M块比萨放到这M + 2个槽
里,因为M >=3,基于鸽笼原理,必定会有两个比萨落到这个槽里。此时整个序列的形
状如下所示:...PXPXXP... 。我们取定中间的那个P,则对手取定旁边的两个X,形状
变成...PXP...。这个时候问题变退化成了M的情况,并保证这M块比萨依然互不相邻。
由于M的时候问题成立,则M+1的时候问题也成立。
进一步的,我们知道N = 3M - 1 , N = 3M的时候问题也成立,从而整个命题成立。
进一步的,这个问题需要从环形数组转化成非环形数组的情况,对取不取第一个数做讨
论,如果取第一个数,则问题变成从前N-1个数取N/3个数,如果不取,问题变成从后N-
1个数取N/3个数。
对于非环形数组的话,这个问题可以用DP来解,dp[N][K]表示从前N个数取K个数的最大
值。那么dp[N][K] = max(dp[N - 1][K] , dp[N - 2][k - 1] + pizza[N])。前者表
示不取第N块比萨,后者表示取第N块比萨。最后问题的解便是 dp[N][ceiling(N/3)]。
这样下来,整个问题是O(n^2)的复杂度,编程应该很容易实现,欢迎指证错误。
f*******t
发帖数: 7549
12
某牛想出一种greedy解:
每次取与两边差最大的数
目前没想出反例,但也不会证明,谁能判断下对错
d**********x
发帖数: 4083
13
这个我想过了,是错的
1 5 1 4 1 1 4
绕一圈,然后按照greedy算法应该是先拿5,但是实际上应该先拿两个4,最后剩下一个
5,拿走。

【在 f*******t 的大作中提到】
: 某牛想出一种greedy解:
: 每次取与两边差最大的数
: 目前没想出反例,但也不会证明,谁能判断下对错

x*****0
发帖数: 452
14
mark
n*****i
发帖数: 64
15
配合alpha-beta pruning??虽然是ai的基本算法,但是作为面试题还是变态了点吧??

【在 w**********o 的大作中提到】
: Try Minimax tree
n*****i
发帖数: 64
16
这个递归想法nb

3
/3

【在 p******9 的大作中提到】
: 这题可以转化成 在N个数的环形数组中取不相邻的N/3(上取整),使这些数和最大。我
: 们可以证明任意这N/3个不相邻的数,必然能对应一种符合原题的取法。
: 可以用数学归纳法证明这个问题,为了方便,重新定义一下变量名,另M为我会取得到
: 的比萨数,则N有三种情况,即N=3M - 2 , N = 3M - 1, N = 3M,我们只证明N = 3M -
: 2这种情况,因为这个时候若能取到,N= 3M - 1或N = 3M 的时候肯定能取到。
: (1)基础条件:若M <= 3,我们可以枚举证明以上命题成立。
: (2)假设M的时候成立,我们证明M + 1的时候也成立。在M + 1的时候,将会有N = 3
: (M + 1) - 2= 3M + 1块比萨。而此时M + 1块比萨之间互不相邻,则在这M + 1块比萨
: 间将会有M + 2个槽(考虑到比萨时环形的),我们将剩余的2M块比萨放到这M + 2个槽
: 里,因为M >=3,基于鸽笼原理,必定会有两个比萨落到这个槽里。此时整个序列的形

c********t
发帖数: 5706
17
如果从dp考虑,这道题比分金币难不少啊,光写 f(i,j) 与f(i-1, j+1)转移方程好像
不行,因为i or j可能已经早被选走,想不出。
能不能用greedy?

【在 r*********n 的大作中提到】
: 分披萨:你选一块,然后对手拿走左右各一块,一直重复直到分完整个披萨。找一个方
: 法,使得你得到的披萨最多。
: 抽象起来就是一组正整数数组,比如[2, 4, 8, 1, 3, 10]。
: 第一次选10, 对手拿走2,3 (注意数组是circular的)
: 第二次选8,对手拿走4,1
: 使得你得到的正整数和最大
: 还问两道常见的算法题,答得很轻松,又问了我的研究课题。最后出了这么一道题,面
: 馆说他刚看到一道题,他没想出来,于是问我的想法。我也没想出来,就给了一个笨方
: 法,然后分析了一下复杂度。
: 然后recruiter就玩失踪,大概是被G磨具了。

c********t
发帖数: 5706
18
取与两边差值最大的数,应该先取两个4. 我觉得这个greedy算法可行。不过不知怎么
证明。
(4-(1+1)) > (5-(1+4))

【在 d**********x 的大作中提到】
: 这个我想过了,是错的
: 1 5 1 4 1 1 4
: 绕一圈,然后按照greedy算法应该是先拿5,但是实际上应该先拿两个4,最后剩下一个
: 5,拿走。

d**********x
发帖数: 4083
19
啥?
5的两边是两个1啊

一个

【在 c********t 的大作中提到】
: 取与两边差值最大的数,应该先取两个4. 我觉得这个greedy算法可行。不过不知怎么
: 证明。
: (4-(1+1)) > (5-(1+4))

c********t
发帖数: 5706
20
哦,眼神不好。看来是不行啊。

【在 d**********x 的大作中提到】
: 啥?
: 5的两边是两个1啊
:
: 一个

相关主题
请问这题有没有公式可以直接求解?Google面试怎么这么难啊,LG很难过,我该怎么劝他呢? (转载)
这题怎么做?如何回答这题:how to explain binary search tree to a 5 year old child
这题有解吗?这题啥意思?
进入JobHunting版参与讨论
c********t
发帖数: 5706
21
发现没理解题目。
请问对于 3,1,6,1,4,2
第一轮 拿走 6,1,1后
第二轮 A拿走4的时候, 这时候3算相邻的吗?

【在 r*********n 的大作中提到】
: 分披萨:你选一块,然后对手拿走左右各一块,一直重复直到分完整个披萨。找一个方
: 法,使得你得到的披萨最多。
: 抽象起来就是一组正整数数组,比如[2, 4, 8, 1, 3, 10]。
: 第一次选10, 对手拿走2,3 (注意数组是circular的)
: 第二次选8,对手拿走4,1
: 使得你得到的正整数和最大
: 还问两道常见的算法题,答得很轻松,又问了我的研究课题。最后出了这么一道题,面
: 馆说他刚看到一道题,他没想出来,于是问我的想法。我也没想出来,就给了一个笨方
: 法,然后分析了一下复杂度。
: 然后recruiter就玩失踪,大概是被G磨具了。

r*********n
发帖数: 4553
22
你拿6,对手拿1,1, 剩下[3,4,2]
然后你拿4,对手拿3,2
用传统的dp[i,j]来解这到题,遇到的问题是dp[i,j](i<=j)不能由dp[k,l](k>=i, l
<=j, k <=l)来决定, 因为index是循环的。

【在 c********t 的大作中提到】
: 发现没理解题目。
: 请问对于 3,1,6,1,4,2
: 第一轮 拿走 6,1,1后
: 第二轮 A拿走4的时候, 这时候3算相邻的吗?

j*****y
发帖数: 1071
23
那哥们不是需要 brute force 吧? 呵呵

l

【在 r*********n 的大作中提到】
: 你拿6,对手拿1,1, 剩下[3,4,2]
: 然后你拿4,对手拿3,2
: 用传统的dp[i,j]来解这到题,遇到的问题是dp[i,j](i<=j)不能由dp[k,l](k>=i, l
: <=j, k <=l)来决定, 因为index是循环的。

c********t
发帖数: 5706
24
明白了。 那就找到不相邻的 (N+2)/3 个元素,使sum最大。需要证明只要不相邻,一定
都能取到。

l

【在 r*********n 的大作中提到】
: 你拿6,对手拿1,1, 剩下[3,4,2]
: 然后你拿4,对手拿3,2
: 用传统的dp[i,j]来解这到题,遇到的问题是dp[i,j](i<=j)不能由dp[k,l](k>=i, l
: <=j, k <=l)来决定, 因为index是循环的。

r*********n
发帖数: 4553
25
我说了brute force的算法,当时为了争取时间,一边说bf方法,一边分析复杂度,一
边想dp。这题一共花了10min不到,我觉得如果没见过这题,想要在10min之内解出来不
是科班出生的基本不太现实吧。

【在 j*****y 的大作中提到】
: 那哥们不是需要 brute force 吧? 呵呵
:
: l

j*****y
发帖数: 1071
26
你是怎么做的阿? 学习一下

【在 r*********n 的大作中提到】
: 我说了brute force的算法,当时为了争取时间,一边说bf方法,一边分析复杂度,一
: 边想dp。这题一共花了10min不到,我觉得如果没见过这题,想要在10min之内解出来不
: 是科班出生的基本不太现实吧。

r*********n
发帖数: 4553
27
就像求permutation一样,一路dfs下去,取走之后mark一下,唯一要注意的是index是
循环的,复杂度是n factorial

【在 j*****y 的大作中提到】
: 你是怎么做的阿? 学习一下
j*****y
发帖数: 1071
28
那还是 brute force 阿?

【在 r*********n 的大作中提到】
: 就像求permutation一样,一路dfs下去,取走之后mark一下,唯一要注意的是index是
: 循环的,复杂度是n factorial

y***g
发帖数: 1492
29
不相邻也不一定能取道

明白了。 那就找到不相邻的 (N 2)/3 个元素,使sum最大。需要证明只要不相邻,一定
都能取到。

【在 c********t 的大作中提到】
: 明白了。 那就找到不相邻的 (N+2)/3 个元素,使sum最大。需要证明只要不相邻,一定
: 都能取到。
:
: l

r*********n
发帖数: 4553
30
对啊,所以说是笨方法嘛....

【在 j*****y 的大作中提到】
: 那还是 brute force 阿?
相关主题
Amazon电面,比楼层扔鸡蛋题更难的智力题这题有啥好思路吗
请教一个常见的面试题的答案关于leetcode 的strStr这题
Wildcard String Matching和怎么提高写程序能力的总结Google分pizza的那道题
进入JobHunting版参与讨论
f*********m
发帖数: 726
31
brute force+look up table(去掉重复)?
j********x
发帖数: 2330
32
似乎是取ceil(n / 3)个数,每两个数之间至少间隔1个元素,并使其和最大。
似乎是有如下结论,满足以上条件的一组数,总是存在一种顺序,使得按照题目要求的
取法总是可以取到全部的数;这个似乎是正确的,没仔细想
至于怎么找最大和,似乎可以用dp来做?
dp[i, j, k] 这是从i开始到j结束(闭区间)的(循环)子串里取k个的元素满足以上
条件的最大值;
dp[i, j, k] = max(dp[i+2, j-1, k - 1], input[j], dp[i, j, k])
^^^ 取i ^^^ 不取i
谁给验证一下
c********t
发帖数: 5706
33
给个反例吧。

★ 发自iPhone App: ChineseWeb 7.8

【在 y***g 的大作中提到】
: 不相邻也不一定能取道
:
: 明白了。 那就找到不相邻的 (N 2)/3 个元素,使sum最大。需要证明只要不相邻,一定
: 都能取到。

f*********d
发帖数: 140
34
V5!
"则在这M + 1块比萨间将会有M + 2个槽(考虑到比萨时环形的),我们将剩余的2M块
比萨放到这M + 2个槽里,"
M + 1 个slot吧(环形),当然了,那会更有利于你的证明,不影响结论!

-
3

【在 p******9 的大作中提到】
: 这题可以转化成 在N个数的环形数组中取不相邻的N/3(上取整),使这些数和最大。我
: 们可以证明任意这N/3个不相邻的数,必然能对应一种符合原题的取法。
: 可以用数学归纳法证明这个问题,为了方便,重新定义一下变量名,另M为我会取得到
: 的比萨数,则N有三种情况,即N=3M - 2 , N = 3M - 1, N = 3M,我们只证明N = 3M -
: 2这种情况,因为这个时候若能取到,N= 3M - 1或N = 3M 的时候肯定能取到。
: (1)基础条件:若M <= 3,我们可以枚举证明以上命题成立。
: (2)假设M的时候成立,我们证明M + 1的时候也成立。在M + 1的时候,将会有N = 3
: (M + 1) - 2= 3M + 1块比萨。而此时M + 1块比萨之间互不相邻,则在这M + 1块比萨
: 间将会有M + 2个槽(考虑到比萨时环形的),我们将剩余的2M块比萨放到这M + 2个槽
: 里,因为M >=3,基于鸽笼原理,必定会有两个比萨落到这个槽里。此时整个序列的形

1 (共1页)
进入JobHunting版参与讨论
相关主题
如何回答这题:how to explain binary search tree to a 5 year old child面试中真的有人出过skyline这种题?
这题啥意思?FB的k-d tree面试题
Amazon电面,比楼层扔鸡蛋题更难的智力题贡献一道电面题
请教一个常见的面试题的答案发个G店面的题目
Wildcard String Matching和怎么提高写程序能力的总结puzzle, 娱乐一下
这题有啥好思路吗发篇面经
关于leetcode 的strStr这题这题什么意思?
Google分pizza的那道题请问这题有没有公式可以直接求解?
相关话题的讨论汇总
话题: dp话题: 比萨话题: 3m话题: move话题: 相邻