avatar
o*g
1
刚刚结束google电面,面了三题,发布一下攒rp.
第一道题找一个字符串里面频率最高的字符, 问了好多小问题,如果是unicode 怎么
办。如果每个字符串5,6个字符怎么办。如果一个机器,四个核怎么处理。在一个
cluster里面,每个机器单核,所有机器互相连接怎么处理(数据量500g, 网速 1g/每
秒)问了20分钟左右。
第二个题我刚刚发现是leetcode gas station 新题,还没来得及做。。 这个题我想了
15分钟没想到o(n) solution。
第三道题,一个数,比如7可以拆成 1+3+3 或者3+4。 求拆成的因子相乘积最大的那个
值。 我先给了个 recursion的solution, 每次从1开始拆。 他说不够有效,然后我又
改成dp,用了10分钟,刚好到45分钟,面试结束。
学艺不精,基本上悲剧了。继续刷题。。
avatar
m*n
2
最后一题永远是要接近e(2.718)的,所以都是3除了最后。

【在 o*******g 的大作中提到】
: 刚刚结束google电面,面了三题,发布一下攒rp.
: 第一道题找一个字符串里面频率最高的字符, 问了好多小问题,如果是unicode 怎么
: 办。如果每个字符串5,6个字符怎么办。如果一个机器,四个核怎么处理。在一个
: cluster里面,每个机器单核,所有机器互相连接怎么处理(数据量500g, 网速 1g/每
: 秒)问了20分钟左右。
: 第二个题我刚刚发现是leetcode gas station 新题,还没来得及做。。 这个题我想了
: 15分钟没想到o(n) solution。
: 第三道题,一个数,比如7可以拆成 1+3+3 或者3+4。 求拆成的因子相乘积最大的那个
: 值。 我先给了个 recursion的solution, 每次从1开始拆。 他说不够有效,然后我又
: 改成dp,用了10分钟,刚好到45分钟,面试结束。

avatar
o*g
3
果然如此,但是要如何证明呢。。。

【在 m******n 的大作中提到】
: 最后一题永远是要接近e(2.718)的,所以都是3除了最后。
avatar
i*s
4
第三题贪心就可以了吧
avatar
m*n
5
首先,算数平均值大于几何平均值,可以证明如果把p分成n个数相乘,(p/n)^n是最大
的。
假设x=p/n,把这个数取log,就是p/x*log(x),对x求导:
-log(x)/x^2+1/x^2=0,也就是说log(x)=1
更直接的办法是利用e=lim(n->inf, (1+1/n)^n),以及凸函数的性质,不过具体怎么做
不记得了。

【在 o*******g 的大作中提到】
: 果然如此,但是要如何证明呢。。。
avatar
x*u
6
大哥牛人啊

【在 m******n 的大作中提到】
: 首先,算数平均值大于几何平均值,可以证明如果把p分成n个数相乘,(p/n)^n是最大
: 的。
: 假设x=p/n,把这个数取log,就是p/x*log(x),对x求导:
: -log(x)/x^2+1/x^2=0,也就是说log(x)=1
: 更直接的办法是利用e=lim(n->inf, (1+1/n)^n),以及凸函数的性质,不过具体怎么做
: 不记得了。

avatar
a*e
7
那这道题的答案是不是
如果被3整除,都拆成3
如果被3除余1, 拆出来一个4
如果被3除余2, 拆出来一个2?

【在 m******n 的大作中提到】
: 首先,算数平均值大于几何平均值,可以证明如果把p分成n个数相乘,(p/n)^n是最大
: 的。
: 假设x=p/n,把这个数取log,就是p/x*log(x),对x求导:
: -log(x)/x^2+1/x^2=0,也就是说log(x)=1
: 更直接的办法是利用e=lim(n->inf, (1+1/n)^n),以及凸函数的性质,不过具体怎么做
: 不记得了。

avatar
z*8
8
如果每个字符串5,6个字符怎么办。
这个有什么说法?
avatar
s*u
9
lz这个是第一轮第二轮,是entry level么,感觉明显比我的难呵呵
avatar
i*e
10
如果是unicode 怎么办?

【在 o*******g 的大作中提到】
: 刚刚结束google电面,面了三题,发布一下攒rp.
: 第一道题找一个字符串里面频率最高的字符, 问了好多小问题,如果是unicode 怎么
: 办。如果每个字符串5,6个字符怎么办。如果一个机器,四个核怎么处理。在一个
: cluster里面,每个机器单核,所有机器互相连接怎么处理(数据量500g, 网速 1g/每
: 秒)问了20分钟左右。
: 第二个题我刚刚发现是leetcode gas station 新题,还没来得及做。。 这个题我想了
: 15分钟没想到o(n) solution。
: 第三道题,一个数,比如7可以拆成 1+3+3 或者3+4。 求拆成的因子相乘积最大的那个
: 值。 我先给了个 recursion的solution, 每次从1开始拆。 他说不够有效,然后我又
: 改成dp,用了10分钟,刚好到45分钟,面试结束。

avatar
b*7
11
hash或排序

【在 i*******e 的大作中提到】
: 如果是unicode 怎么办?
avatar
i*e
12
不好意思, 没明白。为什么unicode make a difference?

【在 b******7 的大作中提到】
: hash或排序
avatar
o*g
13

这个是当时讨论到如果unicode,用一个256*256的数组来存储字符出现频率,每次来一
个新的字
符串都是init数组,overhead比较大,问如何处理

【在 z*********8 的大作中提到】
: 如果每个字符串5,6个字符怎么办。
: 这个有什么说法?

avatar
s*u
14
我也在想这一点,5-6个元素又有什么差别。。

【在 i*******e 的大作中提到】
: 不好意思, 没明白。为什么unicode make a difference?
avatar
u*o
15
45分钟做这么难的三道题,g家还让不让人活了???
avatar
c*p
16
Mark
avatar
f*x
17
感觉leetcode啥的远远不够啊
但是至少保证类似第二题这种要秒杀
LZ45分钟3题已经很好了。
avatar
b*e
18
tough..
avatar
z*5
19

如果是ascii码,那只要建一个128个element的数组,再把string遍历一遍,统计每个
字符出现的次数就行了。
如果是unicode,那么建一个几万个element的数组会导致空间吃紧。。。具体咋解决求
高人解惑啊。
如果只有5,6个元素的话就容易了,可以把string sort了找,省下了额外空间。

【在 s********u 的大作中提到】
: 我也在想这一点,5-6个元素又有什么差别。。
avatar
l*n
20
如果是unicode一般是文字比较集中的,不太可能出现又有中文又有阿拉伯文的时候。
这种稀疏的情况用hashmap应该是最好的吧。

【在 z*****5 的大作中提到】
:
: 如果是ascii码,那只要建一个128个element的数组,再把string遍历一遍,统计每个
: 字符出现的次数就行了。
: 如果是unicode,那么建一个几万个element的数组会导致空间吃紧。。。具体咋解决求
: 高人解惑啊。
: 如果只有5,6个元素的话就容易了,可以把string sort了找,省下了额外空间。

avatar
y*n
21
试做第三题
public static long GetMaxResult(long n)
{
long[] dp = new long[n + 1];
for (long i = 1; i <= n; i++)
{
long max = i;
for (long j = 1; j <= (i >> 1); j++)
if (j * dp[i - j] > max)
max = j * dp[i - j];
dp[i] = max;
}
return dp[n];
}
1=>1
2=>2
3=>3
4=>4
5=>6
6=>9
7=>12
8=>18
9=>27
10=>36
11=>54
12=>81
13=>108
14=>162
15=>243
16=>324
17=>486
18=>729
19=>972
20=>1458
21=>2187
22=>2916
23=>4374
24=>6561
25=>8748
26=>13122
27=>19683
28=>26244
29=>39366
这道题还有更快解法,但证明正确有些难度
avatar
y*g
22
3×3×。。。×3 if n mod 3 = 0
3×3×。。。×3×4 if n mod 3 = 1
3×3×。。。×3×2 if n mod 3 = 2
avatar
d*5
23
这道题首先证明没有大于等于5的数。
如果有,拆成3和n-3, 3×(n-3)显然大于n
然后证明不会多于2个2,否则 2+2+2 可以 变成 3+3
当然不会有1.
然后就没有然后了。。。
如果面试时给出这样的证明,还要编程吗?难道就先判断下对3的模,然后输出答案?

【在 m******n 的大作中提到】
: 首先,算数平均值大于几何平均值,可以证明如果把p分成n个数相乘,(p/n)^n是最大
: 的。
: 假设x=p/n,把这个数取log,就是p/x*log(x),对x求导:
: -log(x)/x^2+1/x^2=0,也就是说log(x)=1
: 更直接的办法是利用e=lim(n->inf, (1+1/n)^n),以及凸函数的性质,不过具体怎么做
: 不记得了。

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。