p*****2 发帖数: 21240 | 1 第二题可以用trie,这样可以skip掉有相同字符的单词。 |
|
|
|
h****n 发帖数: 1093 | 4 第二题没见过。。首先要判断传进来的是神马类型的吧,然后要对不同的类型重载运算
符
大牛你是咋回答的呢呵呵 |
|
w****x 发帖数: 2483 | 5 第二题是不是要以I*D* 为单位数,每次取最小的区间
比如DDIIIDDIID
DD ==> 区间[1,3] => 3 2 1
IIIDD ==> 区间[4,8] => 4 5 8 7 6
IID ==> 区间[9,11] ==> 9, 11, 10 |
|
|
p*****2 发帖数: 21240 | 7
第二题貌似你把一些条件给删除了?我记得数据的规模很小呀。BF应该差不多了。当然
不能纯BF,要稍加一点优化。 |
|
f*****e 发帖数: 2992 | 8 确实,第二题只想到了LP, feasibility的方法。 |
|
|
p*****2 发帖数: 21240 | 10
第二题貌似你把一些条件给删除了?我记得数据的规模很小呀。BF应该差不多了。当然
不能纯BF,要稍加一点优化。 |
|
f*****e 发帖数: 2992 | 11 确实,第二题只想到了LP, feasibility的方法。 |
|
|
|
j********g 发帖数: 80 | 14 第二题 是不是把s按顺序扫一遍就行了, 我没理解错吧
bool find_substr(string si, string t){
int s_len=si.size();
int t_len=t.size();
int j=0;
for(int i=0; i
while(si[i]!=t[j] && j
j++;
if(j==t_len)
return false;
j++;
}
return true;
} |
|
j********g 发帖数: 80 | 15 第二题 是不是把s按顺序扫一遍就行了, 我没理解错吧
bool find_substr(string si, string t){
int s_len=si.size();
int t_len=t.size();
int j=0;
for(int i=0; i
while(si[i]!=t[j] && j
j++;
if(j==t_len)
return false;
j++;
}
return true;
} |
|
l*****a 发帖数: 14598 | 16 那比方说第二题,就得猜了?
给了个3 rows例子
2/4的话什么样子?靠看答案应猜? |
|
|
t********6 发帖数: 348 | 18 第二题,求指导:
class Solution {
public:
void traverse(string& start, string& root, unordered_map
string> >& prev, vector& current, vector>& result) {
auto iter = prev.find(root);
for (string str : iter->second) {
current.push_back(str);
if (str == start) {
vector new_one(current.size());
reverse_copy(current.begin(), current.end(), new_one.begin()
);
result.push_ba... 阅读全帖 |
|
p****e 发帖数: 3548 | 19 不是每次都遍历字典,是每次循环后字典长度都会减少的
修改了一下,第二题也通过OJ large了,不过有点长,就不贴了
大) |
|
|
t********6 发帖数: 348 | 21 第二题,求指导:
class Solution {
public:
void traverse(string& start, string& root, unordered_map
string> >& prev, vector& current, vector>& result) {
auto iter = prev.find(root);
for (string str : iter->second) {
current.push_back(str);
if (str == start) {
vector new_one(current.size());
reverse_copy(current.begin(), current.end(), new_one.begin()
);
result.push_ba... 阅读全帖 |
|
p****e 发帖数: 3548 | 22 不是每次都遍历字典,是每次循环后字典长度都会减少的
修改了一下,第二题也通过OJ large了,不过有点长,就不贴了
大) |
|
f*******t 发帖数: 7549 | 23 第二题:
int magnitutePole(int[] array) {
if(array == null || array.length == 0)
return -1;
int[] status = new int[array.length];
int smaller = Integer.MIN_VALUE, larger = Integer.MAX_VALUE;
for(int i = 0; i < array.length; i++) {
if (array[i] >= smaller) {
smaller = array[i];
status[i]++;
}
}
for(int i = array.length - 1; i >= 0; i--) {
if(array[i] <= larger) {
larger = array[i];
if(status[i] > 0)
return i;
}
}
return -1;
} |
|
l*********8 发帖数: 4642 | 24 第二题,从左向右找max, 从右向左找min.
。 |
|
w****a 发帖数: 710 | 25 第二题我觉得同时扫应该也可以吧。O(n)的space |
|
l*********u 发帖数: 19053 | 26 第二题,用binary search应该更快吧。
对折array。取array中间,向左移pointer,过掉等值,找到小值,pole在右半段,找到
大值,pole在左半段。再取array中间。。。
。 |
|
|
m*****P 发帖数: 1331 | 28 土了 题目都看不懂
能否解释下第二题的意思
给个例子吧 |
|
|
s*******e 发帖数: 1630 | 30 第二题不就是著名startup Splunk正在做的么?就是针对machine log的BI软件 |
|
e*******g 发帖数: 1488 | 31 一面的第二题...我曾经给我国内老板研究生面试出过一个一摸一样的, 递归就normal
了吧, 你面的哪个公司啊...lol, 好奇的问一下... |
|
z*******g 发帖数: 18 | 32 第二题的话特别像那道人站人上,然后看最多站多高的题目。
方法也差不多,从第一个开始,然后把第一个不符合条件的标上记号,
继续一直到最后得到一个最大的sum,然后再从那个标了记号的开始。
用recursion可以做。
find
.. |
|
a****s 发帖数: 559 | 33 第二题更简单。检查每一个pair的a_i,并求sum+=w_i。如果a_i+1
如果sum大于sum_max,那么sum_max=sum;否则,丢弃sum。然后sum清零,从a_i+1开
始继续检查。 |
|
t****a 发帖数: 1212 | 34 第二题
import Data.Function.Memoize
orderPair0 :: [(Int, Int)] -> Int
orderPair0 s = orderPair 0 s
where orderPair :: Int -> [(Int, Int)] -> Int
orderPair _ ([]) = 0
orderPair z ((a,w):xs)
| a <= z = wsum1
| a > z = max wsum1 wsum2
where wsum1 = m_orderPair z xs
wsum2 = w + m_orderPair a xs
m_orderPair = memoize orderPair
main = putStrLn ("No 1. " ++ (show $ orderPair0 [(1,3),(2,2),(3,1)]) ++ "\n"
++
"... 阅读全帖 |
|
b****g 发帖数: 192 | 35 第二题怎么用递归做?
BST tree 要求给每个node添加一个succeesor的指针。
了。 |
|
v******F 发帖数: 61 | 36 光顾看答案,忘了说谢谢
有人可以帮帮忙第二题吗? |
|
|
|
c******t 发帖数: 1500 | 39 第二题是CLRS上的一个练习题,呵呵
多谢楼主分享经历! |
|
x*********w 发帖数: 533 | 40 来自主题: JobHunting版 - 两道F的题 第二题只能想到类似冒泡的O(n^2)的实现,
能用flip实现swap就可以快速排序啦 |
|
g*********e 发帖数: 14401 | 41 第二题是把数据丢到很多台机器上并行着算吧?也就是google所谓的"mapreduce"? |
|
h****y 发帖数: 137 | 42 第二题是用kd tree是mlog(n)吧, m是点数, n是气球数, 还能更快吗?
5% |
|
e*******8 发帖数: 94 | 43 觉得第二题这么做有点太简单化了呀:比如可能所有的点都在单位立方体里,然后每个
球也和单位立方体相交呢(比如每个球和其他球的位置差不多,就是稍稍移动一点点)?
觉得要是用space partition的数据结构,kd-tree或者quad-tree都可以用,但是这样
就没有用到所有的球体都是半径为1的条件?然后对每个球体算包含的点数,觉得有点
inefficient来着。。。
). |
|
d***n 发帖数: 832 | 44 是这个贴子里发出的
http://www.mitbbs.com/article_t/JobHunting/32569901.html
第二题是这样的:
n个Speaker,S1, S2, ...Sn
每个Speaker在不同的时间段有不同的音量如:
S1: {[2,5], vol=10}, {[6,10], vol=2}, ...
S2: {[1,6], vol=1}, {[8,12], vol=8}, ...
...
请输出每个时间段及这个时间段内最大的音量
比如,只有S1和S2的话,输出就是
[1,2],vol=1, [2,5], vol=10, [5,6], vol = 1, [6,8], vol = 2, [8,12], vol = 8.
看了帖子后还是不明白O(nlog(n))是怎么解决的
有真正明白而且写过code的牛人能不能解释一下 |
|
d***n 发帖数: 832 | 45 是这个贴子里发出的
http://www.mitbbs.com/article_t/JobHunting/32569901.html
第二题是这样的:
n个Speaker,S1, S2, ...Sn
每个Speaker在不同的时间段有不同的音量如:
S1: {[2,5], vol=10}, {[6,10], vol=2}, ...
S2: {[1,6], vol=1}, {[8,12], vol=8}, ...
...
请输出每个时间段及这个时间段内最大的音量
比如,只有S1和S2的话,输出就是
[1,2],vol=1, [2,5], vol=10, [5,6], vol = 1, [6,8], vol = 2, [8,12], vol = 8.
看了帖子后还是不明白O(nlog(n))是怎么解决的
有真正明白而且写过code的牛人能不能解释一下 |
|
w*******e 发帖数: 312 | 46 对,第二题是个tournament,有个playmatch(player1, player2)返回winner,但是这
个call is expensive, like 30mins/match
反正我说的是先跑一遍比赛,找出winner,然后把winner之前的对手拿出来再跑一次
tournament,赢的那个就是2nd best,这个好像是linear。不是很确定sort可不可以,
那样就不是tournament了吧?
第三个是比较罗嗦的设计,什么输入一个地址,返回周围可以出租的房子,还要有像
yelp那样的rating和review,关于房子,租客,房东都要,很磨叽很多requirements |
|
S******1 发帖数: 216 | 47
code
第二题就是divided and conquer 然后 recursive函数返回两个值,一个最大,一个第
二大。说实话还蛮tricky的感觉 |
|
n*****f 发帖数: 17 | 48 第二题有n+log(n)次比较的方法,两两PK,胜者再两两PK,直到决出冠军,整个过程就
构成了一棵树,把冠军对应的那些点标出来,第二名只可能出现在这些点的兄弟结点上
。 |
|
f*****e 发帖数: 2992 | 49 第二题怎么用xor做?O(N)时间复杂度倒是可以。 |
|
r********7 发帖数: 102 | 50 谢了,第二题有没有 其他方法啊。 我跟面试官说的用xor运算,但是他说一个integer
最多32位,要是有32位以上的长度就不行了。 问有没有其他方法。 |
|