由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 分享下G家第一个phone interview的题目
相关主题
Google经典题目一问文本编辑器设计, 要求append, insert, delete均为O(1)
问道G家算法题我又fail了面试
what is the internal implementation of DequeLiveRamp笔试题求解——frog jump
求教一道经典面题的解法question 2: o(1) euque and dequeue?
Minimum Window Substring (from leetcode)Google second phone interview
linkedin,rocketfuel, google面经若干[google面试题] API流量控制
问一道A家的面试题f 的面经
sliding window面试题问一道题(6)
相关话题的讨论汇总
话题: int话题: arr话题: max话题: print话题: rst
进入JobHunting版参与讨论
1 (共1页)
w****m
发帖数: 235
1
new graduate Software engineer
是用google doc交流的,题目和代码都直接在上面写。
1.求一个数字数组里的最大连续数字的个数。
3, 4, 4, 4, 2, 2, 3, 4 => return 3
2.两个字符串,第二个字符串是第一个的缺了几个,打印第二个字符串缺了的字符位置。
“abc”, “ab” => print “2”
“abc”, “b” => print “0 2”
“abc”, “ac” => print “1”
“aab”, “ab” => print “0” OR print “1”
3. 一个数字数组,给一个window,长度k,window从数组头开始往后滑动,每次滑动一
个,求每次窗口中的最大值。
3, 4, 5, 7, 3, 5, 2, 9
k = 3
print “5 7 7 7 5 9”
看起来都是些很平常的问题,除了第3题可以稍用点小技巧,不知道还暗藏了什么玄机
吗?
为什么G家phone interview要两个人面?明天还有一个,不知道和这个是不是类似风格
的。
q***y
发帖数: 236
2
遇上这样的题目真是轻松愉快啊。
3要O(n)算法。
t********3
发帖数: 567
3
第三题不是leetcode上面的某个题么

置。

【在 w****m 的大作中提到】
: new graduate Software engineer
: 是用google doc交流的,题目和代码都直接在上面写。
: 1.求一个数字数组里的最大连续数字的个数。
: 3, 4, 4, 4, 2, 2, 3, 4 => return 3
: 2.两个字符串,第二个字符串是第一个的缺了几个,打印第二个字符串缺了的字符位置。
: “abc”, “ab” => print “2”
: “abc”, “b” => print “0 2”
: “abc”, “ac” => print “1”
: “aab”, “ab” => print “0” OR print “1”
: 3. 一个数字数组,给一个window,长度k,window从数组头开始往后滑动,每次滑动一

j********e
发帖数: 1192
4
第3题应该就是考O(N)算法,应该没有其他玄机吧。

new graduate Software engineer
是用google doc交流的,题目和代码都直接在上面写。
1.求一个数字数组里的最大连续数字的个数。
3, 4, 4, 4, 2, 2, 3, 4 => return 3
2.两个字符串,第二个字符串是第一个的缺了几个,打印第二个字符串缺了的字符位置。
“abc”, “ab” => print “2”
“abc”, “b” => print “0 2”
“abc”, “ac” => print “1”
“aab”, “ab” => print “0” OR print “1”
3. 一个数字数组,给一个window,长度k,window从数组头开始往后滑动,每次滑动一
个,求每次窗口中的最大值。
3, 4, 5, 7, 3, 5, 2, 9
k = 3
print “5 7 7 7 5 9”
看起来都是些很平常的问题,除了第3题可以稍用点小技巧,不知道还暗藏了什么玄机
吗?
为什么G家phone interview要两个人面?明天还有一个,不知道和这个是不是类似风格
的。

【在 w****m 的大作中提到】
: new graduate Software engineer
: 是用google doc交流的,题目和代码都直接在上面写。
: 1.求一个数字数组里的最大连续数字的个数。
: 3, 4, 4, 4, 2, 2, 3, 4 => return 3
: 2.两个字符串,第二个字符串是第一个的缺了几个,打印第二个字符串缺了的字符位置。
: “abc”, “ab” => print “2”
: “abc”, “b” => print “0 2”
: “abc”, “ac” => print “1”
: “aab”, “ab” => print “0” OR print “1”
: 3. 一个数字数组,给一个window,长度k,window从数组头开始往后滑动,每次滑动一

d******a
发帖数: 238
5
大家说说第三道题的O(n)解法吧?
w****x
发帖数: 2483
6
第3题没啥好说的啊, 你要是店面给出O(N)的解法,面试官肯定知道你做过,无悬念。
倒是店面给3题有点多
c*******r
发帖数: 610
7
牛啊,电面3道题?
p*****2
发帖数: 21240
8

这题好像没练过。先说说我的想法再去看leetcode。
用一个queue,第一个数总保持最大的值。
每当读一个新数,如果当前最大数过了window,就pop,然后如果当前的数小于最后的
数,push进去。
如果当前的数大于尾巴, 把尾巴干掉。

【在 d******a 的大作中提到】
: 大家说说第三道题的O(n)解法吧?
a***o
发帖数: 1182
9
2爷太牛比了!

【在 p*****2 的大作中提到】
:
: 这题好像没练过。先说说我的想法再去看leetcode。
: 用一个queue,第一个数总保持最大的值。
: 每当读一个新数,如果当前最大数过了window,就pop,然后如果当前的数小于最后的
: 数,push进去。
: 如果当前的数大于尾巴, 把尾巴干掉。

p*****2
发帖数: 21240
10
刚练了一个
from collections import deque
def Max(arr, k):
l=[]
dq=deque()

for i in xrange(len(arr)):
if len(dq) and dq[0]<=i-k:
dq.popleft()

while len(dq) and arr[dq[-1]] dq.pop()

dq.append(i)

if i>=k-1:
l.append(arr[dq[0]])

return l
arr=[3, 4, 5, 7, 3, 5, 2, 9 ]
k=3
print Max(arr,k)
相关主题
linkedin,rocketfuel, google面经若干文本编辑器设计, 要求append, insert, delete均为O(1)
问一道A家的面试题我又fail了面试
sliding window面试题LiveRamp笔试题求解——frog jump
进入JobHunting版参与讨论
p*****2
发帖数: 21240
11
第一题
def Max(l):
dp=[1]*len(l)
for i in xrange(1,len(l)):
if l[i]==l[i-1]+1:
dp[i]=dp[i-1]+1

return max(dp)
l=[3, 4, 4, 4, 2, 2, 3, 4]
print Max(l)
O(1) space的
def Max(l):
m=1
c=1
for i in xrange(1,len(l)):
if l[i]==l[i-1]+1:
c+=1
m=max(m,c)
else:
c=1

return m
c*******r
发帖数: 610
12
二爷真执着,见题必练~佩服

【在 p*****2 的大作中提到】
: 刚练了一个
: from collections import deque
: def Max(arr, k):
: l=[]
: dq=deque()
:
: for i in xrange(len(arr)):
: if len(dq) and dq[0]<=i-k:
: dq.popleft()
:

p*****2
发帖数: 21240
13
第二题
def missing(s1,s2):
l1=list(s1)
l2=list(s2)

j=0
print "----------------------"
for i in xrange(len(l1)):
if j==len(l2) or l1[i]!=l2[j]:
print i
else:
j+=1
missing("abc","ab")
missing("abc","b")
missing("abc","ac")
missing("aab","ab")
p*****2
发帖数: 21240
14

昨天等了一晚上,没人上题。今天有机会得赶紧练练。

【在 c*******r 的大作中提到】
: 二爷真执着,见题必练~佩服
P*A
发帖数: 189
15
楼主跟我当初电面题目一模一样阿,
我估计面试官都一样。
看来他挺懒的,这么久了还不换题目

置。

【在 w****m 的大作中提到】
: new graduate Software engineer
: 是用google doc交流的,题目和代码都直接在上面写。
: 1.求一个数字数组里的最大连续数字的个数。
: 3, 4, 4, 4, 2, 2, 3, 4 => return 3
: 2.两个字符串,第二个字符串是第一个的缺了几个,打印第二个字符串缺了的字符位置。
: “abc”, “ab” => print “2”
: “abc”, “b” => print “0 2”
: “abc”, “ac” => print “1”
: “aab”, “ab” => print “0” OR print “1”
: 3. 一个数字数组,给一个window,长度k,window从数组头开始往后滑动,每次滑动一

p***c
发帖数: 2
16
第2题谁能解释一下,thx.
若“aab”, “ab” => print “0” AND print “1”?

置。

【在 w****m 的大作中提到】
: new graduate Software engineer
: 是用google doc交流的,题目和代码都直接在上面写。
: 1.求一个数字数组里的最大连续数字的个数。
: 3, 4, 4, 4, 2, 2, 3, 4 => return 3
: 2.两个字符串,第二个字符串是第一个的缺了几个,打印第二个字符串缺了的字符位置。
: “abc”, “ab” => print “2”
: “abc”, “b” => print “0 2”
: “abc”, “ac” => print “1”
: “aab”, “ab” => print “0” OR print “1”
: 3. 一个数字数组,给一个window,长度k,window从数组头开始往后滑动,每次滑动一

p*****2
发帖数: 21240
17

是or 不是 and

【在 p***c 的大作中提到】
: 第2题谁能解释一下,thx.
: 若“aab”, “ab” => print “0” AND print “1”?
:
: 置。

h****e
发帖数: 928
18
同佩服。

【在 p*****2 的大作中提到】
:
: 是or 不是 and

q****x
发帖数: 7404
19
三道有点多。1/2和3难度差很多。
第二题就是2匹配1吧。O(n+m)。

置。

【在 w****m 的大作中提到】
: new graduate Software engineer
: 是用google doc交流的,题目和代码都直接在上面写。
: 1.求一个数字数组里的最大连续数字的个数。
: 3, 4, 4, 4, 2, 2, 3, 4 => return 3
: 2.两个字符串,第二个字符串是第一个的缺了几个,打印第二个字符串缺了的字符位置。
: “abc”, “ab” => print “2”
: “abc”, “b” => print “0 2”
: “abc”, “ac” => print “1”
: “aab”, “ab” => print “0” OR print “1”
: 3. 一个数字数组,给一个window,长度k,window从数组头开始往后滑动,每次滑动一

p*****2
发帖数: 21240
20

膜拜Googler大牛

【在 h****e 的大作中提到】
: 同佩服。
相关主题
question 2: o(1) euque and dequeue?f 的面经
Google second phone interview问一道题(6)
[google面试题] API流量控制T onsite一题
进入JobHunting版参与讨论
x*******6
发帖数: 262
21
最后一个missing(‘aab’,‘ab’)没有print出 0 的那种情况啊

【在 p*****2 的大作中提到】
: 第二题
: def missing(s1,s2):
: l1=list(s1)
: l2=list(s2)
:
: j=0
: print "----------------------"
: for i in xrange(len(l1)):
: if j==len(l2) or l1[i]!=l2[j]:
: print i

x*******6
发帖数: 262
22
原来只是要print任意一种情况。。。擦, 想了一晚上
p*****2
发帖数: 21240
23

牛。

【在 x*******6 的大作中提到】
: 原来只是要print任意一种情况。。。擦, 想了一晚上
s***0
发帖数: 117
24
2) is O(N), any time you see this kind of string question the answer is
always hash table...
w****m
发帖数: 235
25

哈哈是吗,那你的另一个面试官问了什么问题呀?

【在 P*A 的大作中提到】
: 楼主跟我当初电面题目一模一样阿,
: 我估计面试官都一样。
: 看来他挺懒的,这么久了还不换题目
:
: 置。

w****m
发帖数: 235
26

第3题我用的方法是,找第二个窗口的最大值的时候,把最后一个数值与第一个窗口的
比较,如果最后一个数值更大,那就输出最后一个数值,并把最大值改成最后一个数值
,找第三个窗口的最大值时,依然把窗口最后一个与第二个窗口的最大值比较,以此类
推。
但如果某个窗口的最大值是这个窗口的第一个数值,下一个窗口就不包含这个最大值了
,就要对这个k大小的窗口重新寻找最大值。
这个的最坏是O(N*k)的复杂度吧。

【在 w****x 的大作中提到】
: 第3题没啥好说的啊, 你要是店面给出O(N)的解法,面试官肯定知道你做过,无悬念。
: 倒是店面给3题有点多

i*********7
发帖数: 348
27
果断拜见大牛。。。话说啥时候在Q上,有事情想问一下捏。

【在 p*****2 的大作中提到】
:
: 牛。

p*****2
发帖数: 21240
28

复杂度高了。看我的code吧。

【在 w****m 的大作中提到】
:
: 第3题我用的方法是,找第二个窗口的最大值的时候,把最后一个数值与第一个窗口的
: 比较,如果最后一个数值更大,那就输出最后一个数值,并把最大值改成最后一个数值
: ,找第三个窗口的最大值时,依然把窗口最后一个与第二个窗口的最大值比较,以此类
: 推。
: 但如果某个窗口的最大值是这个窗口的第一个数值,下一个窗口就不包含这个最大值了
: ,就要对这个k大小的窗口重新寻找最大值。
: 这个的最坏是O(N*k)的复杂度吧。

w****x
发帖数: 2483
29

滔滔江水啊~~~

【在 p*****2 的大作中提到】
: 第一题
: def Max(l):
: dp=[1]*len(l)
: for i in xrange(1,len(l)):
: if l[i]==l[i-1]+1:
: dp[i]=dp[i-1]+1
:
: return max(dp)
: l=[3, 4, 4, 4, 2, 2, 3, 4]
: print Max(l)

x*******6
发帖数: 262
30

我自己做的也是peking2一样的算法,遍历str1给str2一个pointer然后比较字符。
用hashtable的话请问如何处理重复字符问题?还有字符的顺序问题但这个应该可以用
sortedmap解决。小弟刚练算法经常问弱问题请莫见怪。。

【在 s***0 的大作中提到】
: 2) is O(N), any time you see this kind of string question the answer is
: always hash table...

相关主题
问个题。问道G家算法题
一道面试题。what is the internal implementation of Deque
Google经典题目一问求教一道经典面题的解法
进入JobHunting版参与讨论
E*******0
发帖数: 465
31
1st
int GetMaxContiniousNum(int* arr, int num)
{
if(!arr)
return 0;
if (num<=0)
return 0;
int duplicatedNum=*arr;
int duplicatedCount=1;
int rst=duplicatedCount;
for (int i=1; i {
if (*(arr+i)==duplicatedNum)
++duplicatedCount;
else
{
duplicatedNum=*(arr+i);
duplicatedCount=1;
}
if (duplicatedCount>rst)
rst=duplicatedCount;
}
return rst;
}
B*******1
发帖数: 2454
32
My code for this one:
int getMax(int a[], int size)
{
if (size == 0) return 0;
int pre = a[0], maxCount = 0, count = 1;
for (int i = 0; i < size; ) {
while (++i < size && a[i] == pre) {
count ++;
}
if (count > maxCount)
maxCount = count;
if (i == size) break;
count = 1;
pre = a[i];
}
return maxCount;
}

【在 E*******0 的大作中提到】
: 1st
: int GetMaxContiniousNum(int* arr, int num)
: {
: if(!arr)
: return 0;
: if (num<=0)
: return 0;
: int duplicatedNum=*arr;
: int duplicatedCount=1;
: int rst=duplicatedCount;

E*******0
发帖数: 465
33
vector* GetAbsentPositions(string s1, string s2)
{
vector* rst=new vector();
int i=0,j=0;
while (j while (i if (s1[i]!=s2[j])
{
(*rst).push_back(i);
++i;
}
else
{
++j;
++i;
break;
}
while (i (*rst).push_back(i++);
return rst;
}
E*******0
发帖数: 465
34
个人认为if (i==size) break; 不需要。

【在 B*******1 的大作中提到】
: My code for this one:
: int getMax(int a[], int size)
: {
: if (size == 0) return 0;
: int pre = a[0], maxCount = 0, count = 1;
: for (int i = 0; i < size; ) {
: while (++i < size && a[i] == pre) {
: count ++;
: }
: if (count > maxCount)

E*******0
发帖数: 465
35
3rd
I am thinking that maybe we can use heap to implement it.
E*******0
发帖数: 465
36
容我review下heap的知识。
B*******1
发帖数: 2454
37
没有的话下面这句会越界
pre = a[i];

【在 E*******0 的大作中提到】
: 个人认为if (i==size) break; 不需要。
E*******0
发帖数: 465
38
for (int i = 0; i < size; ) {
count = 1;
pre = a[i];
while (++i < size && a[i] == pre) {
count ++;
}
if (count > maxCount)
maxCount = count;
}
这样写会不会清楚些?感觉刚才那样写有点乱。
不过题目比较简单,无所谓了。我刚才只是提出我的个人意见而已。
B*******1
发帖数: 2454
39
是的,刚才写太快了,这样子更加简洁了。

【在 E*******0 的大作中提到】
: for (int i = 0; i < size; ) {
: count = 1;
: pre = a[i];
: while (++i < size && a[i] == pre) {
: count ++;
: }
: if (count > maxCount)
: maxCount = count;
: }
: 这样写会不会清楚些?感觉刚才那样写有点乱。

E*******0
发帖数: 465
40
void GetMaxValueOfWindow(int* arr, int num,int k, list& rst)
{
rst.clear();
if (!arr || 0==num || num return;
for (int i=0;i<=num-k;i++)
{
priority_queue window(arr+i,arr+k+i);
rst.push_back(window.top());
}
return;
}
相关主题
求教一道经典面题的解法问一道A家的面试题
Minimum Window Substring (from leetcode)sliding window面试题
linkedin,rocketfuel, google面经若干文本编辑器设计, 要求append, insert, delete均为O(1)
进入JobHunting版参与讨论
E*******0
发帖数: 465
41
3rd
Get max value in the window by priority queue.
So the computation complexity is O(n*k). We assume that k is constant. So
complexity is O(n).
E*******0
发帖数: 465
42
感觉会有问题。你这个queue应该是heap吧。
如果这个queue里面有不在当前window的数,但却比当前新数要大,如何?你会把这个
不在当前window里面的数当做最大的数。
7 5 6 4 3 2 1

【在 p*****2 的大作中提到】
:
: 复杂度高了。看我的code吧。

p*****2
发帖数: 21240
43

你这个是求最大重复的吧?

【在 B*******1 的大作中提到】
: My code for this one:
: int getMax(int a[], int size)
: {
: if (size == 0) return 0;
: int pre = a[0], maxCount = 0, count = 1;
: for (int i = 0; i < size; ) {
: while (++i < size && a[i] == pre) {
: count ++;
: }
: if (count > maxCount)

l*******s
发帖数: 1258
44
第二题感觉应该有shortest edit distance
稍微改改,就是在那个matrix里面保留delete或者insert,然后就可以了,
应该是O(m*n)
b***e
发帖数: 1419
45
Q3 can have a O(n) solution. As far as the time complexity is concern, this
question is equivalent to a special case where n = 2 * k, where k is the
window size. For this special case, we can
* Divide the array to 4 equal length parts, p1, p2, p3 and p4, each of which
has the length k/2.
* For p2 and p3, find the max value in them, say, v2, and v3.
* Without losing generality, we can assume v2 <= v3. Then we can scan to the
right in one linear pass to cover the windows that start from within p2.
This solves half of the problem, and remaining part is p1.
* Apply the same approach on p1, p2, which is half size of the original
problem.
This will give a complexity n * (1 + 1/2 + 1/4 + ...) = O(2n).

【在 d******a 的大作中提到】
: 大家说说第三道题的O(n)解法吧?
g*****e
发帖数: 282
46
我还联想到*a*b?c的情况,缺的相当于通配符

【在 l*******s 的大作中提到】
: 第二题感觉应该有shortest edit distance
: 稍微改改,就是在那个matrix里面保留delete或者insert,然后就可以了,
: 应该是O(m*n)

p**********e
发帖数: 316
47
keep the window sort, the complexity is nlgk,
How O(n) is achieved using a queue?

【在 E*******0 的大作中提到】
: 感觉会有问题。你这个queue应该是heap吧。
: 如果这个queue里面有不在当前window的数,但却比当前新数要大,如何?你会把这个
: 不在当前window里面的数当做最大的数。
: 7 5 6 4 3 2 1

C***U
发帖数: 2406
48
这个题就是min-stack的变形吧
那个题目要你insert pop min都是O(1)空间
这个题目就是max-queue 然后要insert pop max都是O(1)空间
做法就可以类似min-stack那个题目了

【在 p*****2 的大作中提到】
:
: 你这个是求最大重复的吧?

j********g
发帖数: 244
49
这题这么写行么,
("abc","tc")
好像就会输成 0 1 2啊
是不是还是得上hash table

【在 E*******0 的大作中提到】
: vector* GetAbsentPositions(string s1, string s2)
: {
: vector* rst=new vector();
: int i=0,j=0;
: while (j: while (i: if (s1[i]!=s2[j])
: {
: (*rst).push_back(i);
: ++i;

h****n
发帖数: 2094
50
1. 扫一遍就可以了。
2. 扫一遍也可以了。
3. 可以优化。不用keep K个element

置。

【在 w****m 的大作中提到】
: new graduate Software engineer
: 是用google doc交流的,题目和代码都直接在上面写。
: 1.求一个数字数组里的最大连续数字的个数。
: 3, 4, 4, 4, 2, 2, 3, 4 => return 3
: 2.两个字符串,第二个字符串是第一个的缺了几个,打印第二个字符串缺了的字符位置。
: “abc”, “ab” => print “2”
: “abc”, “b” => print “0 2”
: “abc”, “ac” => print “1”
: “aab”, “ab” => print “0” OR print “1”
: 3. 一个数字数组,给一个window,长度k,window从数组头开始往后滑动,每次滑动一

相关主题
我又fail了面试Google second phone interview
LiveRamp笔试题求解——frog jump[google面试题] API流量控制
question 2: o(1) euque and dequeue?f 的面经
进入JobHunting版参与讨论
A*********n
发帖数: 158
51
第三题是leetcode上的那道滑动窗口题目,用deque来做
http://www.leetcode.com/2011/01/sliding-window-maximum.html

置。

【在 w****m 的大作中提到】
: new graduate Software engineer
: 是用google doc交流的,题目和代码都直接在上面写。
: 1.求一个数字数组里的最大连续数字的个数。
: 3, 4, 4, 4, 2, 2, 3, 4 => return 3
: 2.两个字符串,第二个字符串是第一个的缺了几个,打印第二个字符串缺了的字符位置。
: “abc”, “ab” => print “2”
: “abc”, “b” => print “0 2”
: “abc”, “ac” => print “1”
: “aab”, “ab” => print “0” OR print “1”
: 3. 一个数字数组,给一个window,长度k,window从数组头开始往后滑动,每次滑动一

l****1
发帖数: 19
52
上一个自己写的第三题的Java实现。请求大神门指教。。
顺便为明天G电面intern攒点人品。。
import java.util.*;
public class MaxWindow{
public LinkedList findMax(int[] in, int k){
ArrayDeque deque=new ArrayDeque();
LinkedList result=new LinkedList();
for(int i=0;i if(!deque.isEmpty() && deque.getFirst().index<=i-k)
deque.pollFirst();
while(!deque.isEmpty() && deque.getLast().value ])
deque.pollLast();
deque.addLast(new Pair(in[i],i));
if(i>=k-1)
result.add(deque.getFirst().value);
}
return result;
}
}
class Pair{
int value;
int index;
public Pair(int v,int i){
this.value=v;
this.index=i;
}
}
w***o
发帖数: 109
53
第三题
思路跟二爷的差不多,只不过用数组实现,便于用binary search。他那个是insertion
sort,我的是binary search,稍快一点。
int[] B = {3,4,5,7,3,5,2,9};
int k = 3;
int[] C = new int[B.length];
int l = 0, r = 1;
for(int i = 1; i < B.length; i++) {
int b = B[i];
int ll = l;
while(ll < r) {
int mid = (ll + r) / 2;
if(B[C[mid]] > b)
ll = mid + 1;
else
r = mid;
}
C[r++] = i;
if(i >= k - 1) {
if(i - k >= C[l])
l++;
System.out.println(" " + B[C[l]]);
}
}
e***s
发帖数: 799
54
我觉得 ("abc","tc") 就是invalid input了,因为题目说了 第二字符串是第一字符串
的子集

【在 j********g 的大作中提到】
: 这题这么写行么,
: ("abc","tc")
: 好像就会输成 0 1 2啊
: 是不是还是得上hash table

e***s
发帖数: 799
55
二爷威武! 但是Double Queue C#没有啊,怎么办?

【在 p*****2 的大作中提到】
: 刚练了一个
: from collections import deque
: def Max(arr, k):
: l=[]
: dq=deque()
:
: for i in xrange(len(arr)):
: if len(dq) and dq[0]<=i-k:
: dq.popleft()
:

m*****k
发帖数: 731
56
for (int i = 0; i < size; ) {
: while (++i < size && a[i] == pre) {
why not
for (int i = 1; i < size; i++ ) {
: while ( a[i] == pre) {

【在 B*******1 的大作中提到】
: My code for this one:
: int getMax(int a[], int size)
: {
: if (size == 0) return 0;
: int pre = a[0], maxCount = 0, count = 1;
: for (int i = 0; i < size; ) {
: while (++i < size && a[i] == pre) {
: count ++;
: }
: if (count > maxCount)

f**********n
发帖数: 258
f**********n
发帖数: 258
f**********n
发帖数: 258
59
单调队列 http://blog.csdn.net/fp_hzq/article/details/7879029\
poj 2823 Sliding Window(简单单调队列)
http://poj.org/problem?id=2823
当年胡昊出的月赛题目
f**********n
发帖数: 258
60
单调队列 http://blog.csdn.net/fp_hzq/article/details/7879029\
poj 2823 Sliding Window(简单单调队列)
http://poj.org/problem?id=2823
当年胡昊出的月赛题目
相关主题
问一道题(6)一道面试题。
T onsite一题Google经典题目一问
问个题。问道G家算法题
进入JobHunting版参与讨论
f**********n
发帖数: 258
61
单调队列 http://blog.csdn.net/fp_hzq/article/details/7879029\
poj 2823 Sliding Window(简单单调队列)
http://poj.org/problem?id=2823
当年胡昊出的月赛题目
h*****f
发帖数: 248
62
Hmm...the runtime complexity of your algo is > O(n) I think.
You have n elements and a window of k.
Hence, you will have to create at least n-k priority_queues, and each
priority_queue takes O(k) to create.
When k = n, it takes O(n).
When k = n/2, it takes (n^2) as (n-k)*k=(n-n/2)(n/2) = n^2/4.

【在 E*******0 的大作中提到】
: 3rd
: Get max value in the window by priority queue.
: So the computation complexity is O(n*k). We assume that k is constant. So
: complexity is O(n).

w****m
发帖数: 235
63
new graduate Software engineer
是用google doc交流的,题目和代码都直接在上面写。
1.求一个数字数组里的最大连续数字的个数。
3, 4, 4, 4, 2, 2, 3, 4 => return 3
2.两个字符串,第二个字符串是第一个的缺了几个,打印第二个字符串缺了的字符位置。
“abc”, “ab” => print “2”
“abc”, “b” => print “0 2”
“abc”, “ac” => print “1”
“aab”, “ab” => print “0” OR print “1”
3. 一个数字数组,给一个window,长度k,window从数组头开始往后滑动,每次滑动一
个,求每次窗口中的最大值。
3, 4, 5, 7, 3, 5, 2, 9
k = 3
print “5 7 7 7 5 9”
看起来都是些很平常的问题,除了第3题可以稍用点小技巧,不知道还暗藏了什么玄机
吗?
为什么G家phone interview要两个人面?明天还有一个,不知道和这个是不是类似风格
的。
q***y
发帖数: 236
64
遇上这样的题目真是轻松愉快啊。
3要O(n)算法。
t********3
发帖数: 567
65
第三题不是leetcode上面的某个题么

置。

【在 w****m 的大作中提到】
: new graduate Software engineer
: 是用google doc交流的,题目和代码都直接在上面写。
: 1.求一个数字数组里的最大连续数字的个数。
: 3, 4, 4, 4, 2, 2, 3, 4 => return 3
: 2.两个字符串,第二个字符串是第一个的缺了几个,打印第二个字符串缺了的字符位置。
: “abc”, “ab” => print “2”
: “abc”, “b” => print “0 2”
: “abc”, “ac” => print “1”
: “aab”, “ab” => print “0” OR print “1”
: 3. 一个数字数组,给一个window,长度k,window从数组头开始往后滑动,每次滑动一

j********e
发帖数: 1192
66
第3题应该就是考O(N)算法,应该没有其他玄机吧。

new graduate Software engineer
是用google doc交流的,题目和代码都直接在上面写。
1.求一个数字数组里的最大连续数字的个数。
3, 4, 4, 4, 2, 2, 3, 4 => return 3
2.两个字符串,第二个字符串是第一个的缺了几个,打印第二个字符串缺了的字符位置。
“abc”, “ab” => print “2”
“abc”, “b” => print “0 2”
“abc”, “ac” => print “1”
“aab”, “ab” => print “0” OR print “1”
3. 一个数字数组,给一个window,长度k,window从数组头开始往后滑动,每次滑动一
个,求每次窗口中的最大值。
3, 4, 5, 7, 3, 5, 2, 9
k = 3
print “5 7 7 7 5 9”
看起来都是些很平常的问题,除了第3题可以稍用点小技巧,不知道还暗藏了什么玄机
吗?
为什么G家phone interview要两个人面?明天还有一个,不知道和这个是不是类似风格
的。

【在 w****m 的大作中提到】
: new graduate Software engineer
: 是用google doc交流的,题目和代码都直接在上面写。
: 1.求一个数字数组里的最大连续数字的个数。
: 3, 4, 4, 4, 2, 2, 3, 4 => return 3
: 2.两个字符串,第二个字符串是第一个的缺了几个,打印第二个字符串缺了的字符位置。
: “abc”, “ab” => print “2”
: “abc”, “b” => print “0 2”
: “abc”, “ac” => print “1”
: “aab”, “ab” => print “0” OR print “1”
: 3. 一个数字数组,给一个window,长度k,window从数组头开始往后滑动,每次滑动一

d******a
发帖数: 238
67
大家说说第三道题的O(n)解法吧?
w****x
发帖数: 2483
68
第3题没啥好说的啊, 你要是店面给出O(N)的解法,面试官肯定知道你做过,无悬念。
倒是店面给3题有点多
c*******r
发帖数: 610
69
牛啊,电面3道题?
p*****2
发帖数: 21240
70

这题好像没练过。先说说我的想法再去看leetcode。
用一个queue,第一个数总保持最大的值。
每当读一个新数,如果当前最大数过了window,就pop,然后如果当前的数小于最后的
数,push进去。
如果当前的数大于尾巴, 把尾巴干掉。

【在 d******a 的大作中提到】
: 大家说说第三道题的O(n)解法吧?
相关主题
问道G家算法题Minimum Window Substring (from leetcode)
what is the internal implementation of Dequelinkedin,rocketfuel, google面经若干
求教一道经典面题的解法问一道A家的面试题
进入JobHunting版参与讨论
a***o
发帖数: 1182
71
2爷太牛比了!

【在 p*****2 的大作中提到】
:
: 这题好像没练过。先说说我的想法再去看leetcode。
: 用一个queue,第一个数总保持最大的值。
: 每当读一个新数,如果当前最大数过了window,就pop,然后如果当前的数小于最后的
: 数,push进去。
: 如果当前的数大于尾巴, 把尾巴干掉。

p*****2
发帖数: 21240
72
刚练了一个
from collections import deque
def Max(arr, k):
l=[]
dq=deque()

for i in xrange(len(arr)):
if len(dq) and dq[0]<=i-k:
dq.popleft()

while len(dq) and arr[dq[-1]] dq.pop()

dq.append(i)

if i>=k-1:
l.append(arr[dq[0]])

return l
arr=[3, 4, 5, 7, 3, 5, 2, 9 ]
k=3
print Max(arr,k)
p*****2
发帖数: 21240
73
第一题
def Max(l):
dp=[1]*len(l)
for i in xrange(1,len(l)):
if l[i]==l[i-1]+1:
dp[i]=dp[i-1]+1

return max(dp)
l=[3, 4, 4, 4, 2, 2, 3, 4]
print Max(l)
O(1) space的
def Max(l):
m=1
c=1
for i in xrange(1,len(l)):
if l[i]==l[i-1]+1:
c+=1
m=max(m,c)
else:
c=1

return m
c*******r
发帖数: 610
74
二爷真执着,见题必练~佩服

【在 p*****2 的大作中提到】
: 刚练了一个
: from collections import deque
: def Max(arr, k):
: l=[]
: dq=deque()
:
: for i in xrange(len(arr)):
: if len(dq) and dq[0]<=i-k:
: dq.popleft()
:

p*****2
发帖数: 21240
75
第二题
def missing(s1,s2):
l1=list(s1)
l2=list(s2)

j=0
print "----------------------"
for i in xrange(len(l1)):
if j==len(l2) or l1[i]!=l2[j]:
print i
else:
j+=1
missing("abc","ab")
missing("abc","b")
missing("abc","ac")
missing("aab","ab")
p*****2
发帖数: 21240
76

昨天等了一晚上,没人上题。今天有机会得赶紧练练。

【在 c*******r 的大作中提到】
: 二爷真执着,见题必练~佩服
P*A
发帖数: 189
77
楼主跟我当初电面题目一模一样阿,
我估计面试官都一样。
看来他挺懒的,这么久了还不换题目

置。

【在 w****m 的大作中提到】
: new graduate Software engineer
: 是用google doc交流的,题目和代码都直接在上面写。
: 1.求一个数字数组里的最大连续数字的个数。
: 3, 4, 4, 4, 2, 2, 3, 4 => return 3
: 2.两个字符串,第二个字符串是第一个的缺了几个,打印第二个字符串缺了的字符位置。
: “abc”, “ab” => print “2”
: “abc”, “b” => print “0 2”
: “abc”, “ac” => print “1”
: “aab”, “ab” => print “0” OR print “1”
: 3. 一个数字数组,给一个window,长度k,window从数组头开始往后滑动,每次滑动一

p***c
发帖数: 2
78
第2题谁能解释一下,thx.
若“aab”, “ab” => print “0” AND print “1”?

置。

【在 w****m 的大作中提到】
: new graduate Software engineer
: 是用google doc交流的,题目和代码都直接在上面写。
: 1.求一个数字数组里的最大连续数字的个数。
: 3, 4, 4, 4, 2, 2, 3, 4 => return 3
: 2.两个字符串,第二个字符串是第一个的缺了几个,打印第二个字符串缺了的字符位置。
: “abc”, “ab” => print “2”
: “abc”, “b” => print “0 2”
: “abc”, “ac” => print “1”
: “aab”, “ab” => print “0” OR print “1”
: 3. 一个数字数组,给一个window,长度k,window从数组头开始往后滑动,每次滑动一

p*****2
发帖数: 21240
79

是or 不是 and

【在 p***c 的大作中提到】
: 第2题谁能解释一下,thx.
: 若“aab”, “ab” => print “0” AND print “1”?
:
: 置。

h****e
发帖数: 928
80
同佩服。

【在 p*****2 的大作中提到】
:
: 是or 不是 and

相关主题
sliding window面试题LiveRamp笔试题求解——frog jump
文本编辑器设计, 要求append, insert, delete均为O(1)question 2: o(1) euque and dequeue?
我又fail了面试Google second phone interview
进入JobHunting版参与讨论
q****x
发帖数: 7404
81
三道有点多。1/2和3难度差很多。
第二题就是2匹配1吧。O(n+m)。

置。

【在 w****m 的大作中提到】
: new graduate Software engineer
: 是用google doc交流的,题目和代码都直接在上面写。
: 1.求一个数字数组里的最大连续数字的个数。
: 3, 4, 4, 4, 2, 2, 3, 4 => return 3
: 2.两个字符串,第二个字符串是第一个的缺了几个,打印第二个字符串缺了的字符位置。
: “abc”, “ab” => print “2”
: “abc”, “b” => print “0 2”
: “abc”, “ac” => print “1”
: “aab”, “ab” => print “0” OR print “1”
: 3. 一个数字数组,给一个window,长度k,window从数组头开始往后滑动,每次滑动一

p*****2
发帖数: 21240
82

膜拜Googler大牛

【在 h****e 的大作中提到】
: 同佩服。
x*******6
发帖数: 262
83
最后一个missing(‘aab’,‘ab’)没有print出 0 的那种情况啊

【在 p*****2 的大作中提到】
: 第二题
: def missing(s1,s2):
: l1=list(s1)
: l2=list(s2)
:
: j=0
: print "----------------------"
: for i in xrange(len(l1)):
: if j==len(l2) or l1[i]!=l2[j]:
: print i

x*******6
发帖数: 262
84
原来只是要print任意一种情况。。。擦, 想了一晚上
p*****2
发帖数: 21240
85

牛。

【在 x*******6 的大作中提到】
: 原来只是要print任意一种情况。。。擦, 想了一晚上
s***0
发帖数: 117
86
2) is O(N), any time you see this kind of string question the answer is
always hash table...
w****m
发帖数: 235
87

哈哈是吗,那你的另一个面试官问了什么问题呀?

【在 P*A 的大作中提到】
: 楼主跟我当初电面题目一模一样阿,
: 我估计面试官都一样。
: 看来他挺懒的,这么久了还不换题目
:
: 置。

w****m
发帖数: 235
88

第3题我用的方法是,找第二个窗口的最大值的时候,把最后一个数值与第一个窗口的
比较,如果最后一个数值更大,那就输出最后一个数值,并把最大值改成最后一个数值
,找第三个窗口的最大值时,依然把窗口最后一个与第二个窗口的最大值比较,以此类
推。
但如果某个窗口的最大值是这个窗口的第一个数值,下一个窗口就不包含这个最大值了
,就要对这个k大小的窗口重新寻找最大值。
这个的最坏是O(N*k)的复杂度吧。

【在 w****x 的大作中提到】
: 第3题没啥好说的啊, 你要是店面给出O(N)的解法,面试官肯定知道你做过,无悬念。
: 倒是店面给3题有点多

i*********7
发帖数: 348
89
果断拜见大牛。。。话说啥时候在Q上,有事情想问一下捏。

【在 p*****2 的大作中提到】
:
: 牛。

p*****2
发帖数: 21240
90

复杂度高了。看我的code吧。

【在 w****m 的大作中提到】
:
: 第3题我用的方法是,找第二个窗口的最大值的时候,把最后一个数值与第一个窗口的
: 比较,如果最后一个数值更大,那就输出最后一个数值,并把最大值改成最后一个数值
: ,找第三个窗口的最大值时,依然把窗口最后一个与第二个窗口的最大值比较,以此类
: 推。
: 但如果某个窗口的最大值是这个窗口的第一个数值,下一个窗口就不包含这个最大值了
: ,就要对这个k大小的窗口重新寻找最大值。
: 这个的最坏是O(N*k)的复杂度吧。

相关主题
[google面试题] API流量控制T onsite一题
f 的面经问个题。
问一道题(6)一道面试题。
进入JobHunting版参与讨论
w****x
发帖数: 2483
91

滔滔江水啊~~~

【在 p*****2 的大作中提到】
: 第一题
: def Max(l):
: dp=[1]*len(l)
: for i in xrange(1,len(l)):
: if l[i]==l[i-1]+1:
: dp[i]=dp[i-1]+1
:
: return max(dp)
: l=[3, 4, 4, 4, 2, 2, 3, 4]
: print Max(l)

x*******6
发帖数: 262
92

我自己做的也是peking2一样的算法,遍历str1给str2一个pointer然后比较字符。
用hashtable的话请问如何处理重复字符问题?还有字符的顺序问题但这个应该可以用
sortedmap解决。小弟刚练算法经常问弱问题请莫见怪。。

【在 s***0 的大作中提到】
: 2) is O(N), any time you see this kind of string question the answer is
: always hash table...

E*******0
发帖数: 465
93
1st
int GetMaxContiniousNum(int* arr, int num)
{
if(!arr)
return 0;
if (num<=0)
return 0;
int duplicatedNum=*arr;
int duplicatedCount=1;
int rst=duplicatedCount;
for (int i=1; i {
if (*(arr+i)==duplicatedNum)
++duplicatedCount;
else
{
duplicatedNum=*(arr+i);
duplicatedCount=1;
}
if (duplicatedCount>rst)
rst=duplicatedCount;
}
return rst;
}
B*******1
发帖数: 2454
94
My code for this one:
int getMax(int a[], int size)
{
if (size == 0) return 0;
int pre = a[0], maxCount = 0, count = 1;
for (int i = 0; i < size; ) {
while (++i < size && a[i] == pre) {
count ++;
}
if (count > maxCount)
maxCount = count;
if (i == size) break;
count = 1;
pre = a[i];
}
return maxCount;
}

【在 E*******0 的大作中提到】
: 1st
: int GetMaxContiniousNum(int* arr, int num)
: {
: if(!arr)
: return 0;
: if (num<=0)
: return 0;
: int duplicatedNum=*arr;
: int duplicatedCount=1;
: int rst=duplicatedCount;

E*******0
发帖数: 465
95
vector* GetAbsentPositions(string s1, string s2)
{
vector* rst=new vector();
int i=0,j=0;
while (j while (i if (s1[i]!=s2[j])
{
(*rst).push_back(i);
++i;
}
else
{
++j;
++i;
break;
}
while (i (*rst).push_back(i++);
return rst;
}
E*******0
发帖数: 465
96
个人认为if (i==size) break; 不需要。

【在 B*******1 的大作中提到】
: My code for this one:
: int getMax(int a[], int size)
: {
: if (size == 0) return 0;
: int pre = a[0], maxCount = 0, count = 1;
: for (int i = 0; i < size; ) {
: while (++i < size && a[i] == pre) {
: count ++;
: }
: if (count > maxCount)

E*******0
发帖数: 465
97
3rd
I am thinking that maybe we can use heap to implement it.
E*******0
发帖数: 465
98
容我review下heap的知识。
B*******1
发帖数: 2454
99
没有的话下面这句会越界
pre = a[i];

【在 E*******0 的大作中提到】
: 个人认为if (i==size) break; 不需要。
E*******0
发帖数: 465
100
for (int i = 0; i < size; ) {
count = 1;
pre = a[i];
while (++i < size && a[i] == pre) {
count ++;
}
if (count > maxCount)
maxCount = count;
}
这样写会不会清楚些?感觉刚才那样写有点乱。
不过题目比较简单,无所谓了。我刚才只是提出我的个人意见而已。
相关主题
Google经典题目一问求教一道经典面题的解法
问道G家算法题Minimum Window Substring (from leetcode)
what is the internal implementation of Dequelinkedin,rocketfuel, google面经若干
进入JobHunting版参与讨论
B*******1
发帖数: 2454
101
是的,刚才写太快了,这样子更加简洁了。

【在 E*******0 的大作中提到】
: for (int i = 0; i < size; ) {
: count = 1;
: pre = a[i];
: while (++i < size && a[i] == pre) {
: count ++;
: }
: if (count > maxCount)
: maxCount = count;
: }
: 这样写会不会清楚些?感觉刚才那样写有点乱。

E*******0
发帖数: 465
102
void GetMaxValueOfWindow(int* arr, int num,int k, list& rst)
{
rst.clear();
if (!arr || 0==num || num return;
for (int i=0;i<=num-k;i++)
{
priority_queue window(arr+i,arr+k+i);
rst.push_back(window.top());
}
return;
}
E*******0
发帖数: 465
103
3rd
Get max value in the window by priority queue.
So the computation complexity is O(n*k). We assume that k is constant. So
complexity is O(n).
E*******0
发帖数: 465
104
感觉会有问题。你这个queue应该是heap吧。
如果这个queue里面有不在当前window的数,但却比当前新数要大,如何?你会把这个
不在当前window里面的数当做最大的数。
7 5 6 4 3 2 1

【在 p*****2 的大作中提到】
:
: 复杂度高了。看我的code吧。

p*****2
发帖数: 21240
105

你这个是求最大重复的吧?

【在 B*******1 的大作中提到】
: My code for this one:
: int getMax(int a[], int size)
: {
: if (size == 0) return 0;
: int pre = a[0], maxCount = 0, count = 1;
: for (int i = 0; i < size; ) {
: while (++i < size && a[i] == pre) {
: count ++;
: }
: if (count > maxCount)

l*******s
发帖数: 1258
106
第二题感觉应该有shortest edit distance
稍微改改,就是在那个matrix里面保留delete或者insert,然后就可以了,
应该是O(m*n)
b***e
发帖数: 1419
107
Q3 can have a O(n) solution. As far as the time complexity is concern, this
question is equivalent to a special case where n = 2 * k, where k is the
window size. For this special case, we can
* Divide the array to 4 equal length parts, p1, p2, p3 and p4, each of which
has the length k/2.
* For p2 and p3, find the max value in them, say, v2, and v3.
* Without losing generality, we can assume v2 <= v3. Then we can scan to the
right in one linear pass to cover the windows that start from within p2.
This solves half of the problem, and remaining part is p1.
* Apply the same approach on p1, p2, which is half size of the original
problem.
This will give a complexity n * (1 + 1/2 + 1/4 + ...) = O(2n).

【在 d******a 的大作中提到】
: 大家说说第三道题的O(n)解法吧?
g*****e
发帖数: 282
108
我还联想到*a*b?c的情况,缺的相当于通配符

【在 l*******s 的大作中提到】
: 第二题感觉应该有shortest edit distance
: 稍微改改,就是在那个matrix里面保留delete或者insert,然后就可以了,
: 应该是O(m*n)

p**********e
发帖数: 316
109
keep the window sort, the complexity is nlgk,
How O(n) is achieved using a queue?

【在 E*******0 的大作中提到】
: 感觉会有问题。你这个queue应该是heap吧。
: 如果这个queue里面有不在当前window的数,但却比当前新数要大,如何?你会把这个
: 不在当前window里面的数当做最大的数。
: 7 5 6 4 3 2 1

C***U
发帖数: 2406
110
这个题就是min-stack的变形吧
那个题目要你insert pop min都是O(1)空间
这个题目就是max-queue 然后要insert pop max都是O(1)空间
做法就可以类似min-stack那个题目了

【在 p*****2 的大作中提到】
:
: 你这个是求最大重复的吧?

相关主题
linkedin,rocketfuel, google面经若干文本编辑器设计, 要求append, insert, delete均为O(1)
问一道A家的面试题我又fail了面试
sliding window面试题LiveRamp笔试题求解——frog jump
进入JobHunting版参与讨论
j********g
发帖数: 244
111
这题这么写行么,
("abc","tc")
好像就会输成 0 1 2啊
是不是还是得上hash table

【在 E*******0 的大作中提到】
: vector* GetAbsentPositions(string s1, string s2)
: {
: vector* rst=new vector();
: int i=0,j=0;
: while (j: while (i: if (s1[i]!=s2[j])
: {
: (*rst).push_back(i);
: ++i;

h****n
发帖数: 2094
112
1. 扫一遍就可以了。
2. 扫一遍也可以了。
3. 可以优化。不用keep K个element

置。

【在 w****m 的大作中提到】
: new graduate Software engineer
: 是用google doc交流的,题目和代码都直接在上面写。
: 1.求一个数字数组里的最大连续数字的个数。
: 3, 4, 4, 4, 2, 2, 3, 4 => return 3
: 2.两个字符串,第二个字符串是第一个的缺了几个,打印第二个字符串缺了的字符位置。
: “abc”, “ab” => print “2”
: “abc”, “b” => print “0 2”
: “abc”, “ac” => print “1”
: “aab”, “ab” => print “0” OR print “1”
: 3. 一个数字数组,给一个window,长度k,window从数组头开始往后滑动,每次滑动一

A*********n
发帖数: 158
113
第三题是leetcode上的那道滑动窗口题目,用deque来做
http://www.leetcode.com/2011/01/sliding-window-maximum.html

置。

【在 w****m 的大作中提到】
: new graduate Software engineer
: 是用google doc交流的,题目和代码都直接在上面写。
: 1.求一个数字数组里的最大连续数字的个数。
: 3, 4, 4, 4, 2, 2, 3, 4 => return 3
: 2.两个字符串,第二个字符串是第一个的缺了几个,打印第二个字符串缺了的字符位置。
: “abc”, “ab” => print “2”
: “abc”, “b” => print “0 2”
: “abc”, “ac” => print “1”
: “aab”, “ab” => print “0” OR print “1”
: 3. 一个数字数组,给一个window,长度k,window从数组头开始往后滑动,每次滑动一

l****1
发帖数: 19
114
上一个自己写的第三题的Java实现。请求大神门指教。。
顺便为明天G电面intern攒点人品。。
import java.util.*;
public class MaxWindow{
public LinkedList findMax(int[] in, int k){
ArrayDeque deque=new ArrayDeque();
LinkedList result=new LinkedList();
for(int i=0;i if(!deque.isEmpty() && deque.getFirst().index<=i-k)
deque.pollFirst();
while(!deque.isEmpty() && deque.getLast().value ])
deque.pollLast();
deque.addLast(new Pair(in[i],i));
if(i>=k-1)
result.add(deque.getFirst().value);
}
return result;
}
}
class Pair{
int value;
int index;
public Pair(int v,int i){
this.value=v;
this.index=i;
}
}
w***o
发帖数: 109
115
第三题
思路跟二爷的差不多,只不过用数组实现,便于用binary search。他那个是insertion
sort,我的是binary search,稍快一点。
int[] B = {3,4,5,7,3,5,2,9};
int k = 3;
int[] C = new int[B.length];
int l = 0, r = 1;
for(int i = 1; i < B.length; i++) {
int b = B[i];
int ll = l;
while(ll < r) {
int mid = (ll + r) / 2;
if(B[C[mid]] > b)
ll = mid + 1;
else
r = mid;
}
C[r++] = i;
if(i >= k - 1) {
if(i - k >= C[l])
l++;
System.out.println(" " + B[C[l]]);
}
}
e***s
发帖数: 799
116
我觉得 ("abc","tc") 就是invalid input了,因为题目说了 第二字符串是第一字符串
的子集

【在 j********g 的大作中提到】
: 这题这么写行么,
: ("abc","tc")
: 好像就会输成 0 1 2啊
: 是不是还是得上hash table

e***s
发帖数: 799
117
二爷威武! 但是Double Queue C#没有啊,怎么办?

【在 p*****2 的大作中提到】
: 刚练了一个
: from collections import deque
: def Max(arr, k):
: l=[]
: dq=deque()
:
: for i in xrange(len(arr)):
: if len(dq) and dq[0]<=i-k:
: dq.popleft()
:

m*****k
发帖数: 731
118
for (int i = 0; i < size; ) {
: while (++i < size && a[i] == pre) {
why not
for (int i = 1; i < size; i++ ) {
: while ( a[i] == pre) {

【在 B*******1 的大作中提到】
: My code for this one:
: int getMax(int a[], int size)
: {
: if (size == 0) return 0;
: int pre = a[0], maxCount = 0, count = 1;
: for (int i = 0; i < size; ) {
: while (++i < size && a[i] == pre) {
: count ++;
: }
: if (count > maxCount)

f**********n
发帖数: 258
f**********n
发帖数: 258
相关主题
question 2: o(1) euque and dequeue?f 的面经
Google second phone interview问一道题(6)
[google面试题] API流量控制T onsite一题
进入JobHunting版参与讨论
f**********n
发帖数: 258
121
单调队列 http://blog.csdn.net/fp_hzq/article/details/7879029\
poj 2823 Sliding Window(简单单调队列)
http://poj.org/problem?id=2823
当年胡昊出的月赛题目
f**********n
发帖数: 258
122
单调队列 http://blog.csdn.net/fp_hzq/article/details/7879029\
poj 2823 Sliding Window(简单单调队列)
http://poj.org/problem?id=2823
当年胡昊出的月赛题目
f**********n
发帖数: 258
123
单调队列 http://blog.csdn.net/fp_hzq/article/details/7879029\
poj 2823 Sliding Window(简单单调队列)
http://poj.org/problem?id=2823
当年胡昊出的月赛题目
h*****f
发帖数: 248
124
Hmm...the runtime complexity of your algo is > O(n) I think.
You have n elements and a window of k.
Hence, you will have to create at least n-k priority_queues, and each
priority_queue takes O(k) to create.
When k = n, it takes O(n).
When k = n/2, it takes (n^2) as (n-k)*k=(n-n/2)(n/2) = n^2/4.

【在 E*******0 的大作中提到】
: 3rd
: Get max value in the window by priority queue.
: So the computation complexity is O(n*k). We assume that k is constant. So
: complexity is O(n).

b*******s
发帖数: 5216
125
O(n)也不难

【在 q***y 的大作中提到】
: 遇上这样的题目真是轻松愉快啊。
: 3要O(n)算法。

q****m
发帖数: 177
126
对于第二道题,
"ab", "ba", 这个怎么搞? 顺序matter吗?
对于第三道题, 只想到用 heap, 那么就是 n log k.

置。

【在 w****m 的大作中提到】
: new graduate Software engineer
: 是用google doc交流的,题目和代码都直接在上面写。
: 1.求一个数字数组里的最大连续数字的个数。
: 3, 4, 4, 4, 2, 2, 3, 4 => return 3
: 2.两个字符串,第二个字符串是第一个的缺了几个,打印第二个字符串缺了的字符位置。
: “abc”, “ab” => print “2”
: “abc”, “b” => print “0 2”
: “abc”, “ac” => print “1”
: “aab”, “ab” => print “0” OR print “1”
: 3. 一个数字数组,给一个window,长度k,window从数组头开始往后滑动,每次滑动一

a********3
发帖数: 228
127
第一题题意有点歧义,如果输入数组是{4, 5, 4, 4, 2, 2, 3, 3, 3},输出是1还是3
1 (共1页)
进入JobHunting版参与讨论
相关主题
问一道题(6)Minimum Window Substring (from leetcode)
T onsite一题linkedin,rocketfuel, google面经若干
问个题。问一道A家的面试题
一道面试题。sliding window面试题
Google经典题目一问文本编辑器设计, 要求append, insert, delete均为O(1)
问道G家算法题我又fail了面试
what is the internal implementation of DequeLiveRamp笔试题求解——frog jump
求教一道经典面题的解法question 2: o(1) euque and dequeue?
相关话题的讨论汇总
话题: int话题: arr话题: max话题: print话题: rst