由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 我再说说我挂掉的那道题吧
相关主题
问一道刚面试完的algorithm 的题, 面试官非要最优解,我想不出来啊FB电面
leetcode: Remove Duplicates from Sorted Array今天计划做20题
google 面试题给定一个值和sorted队列,只有唯一的pair其和等于给定值
amazon tel interview一道面试题
请教一道题问一道面世题
请教一道面试题问个题: 找read-only array中duplicate的数
longest subarray with numbers arranged as a seq问一个search in rotated array的问题
[emc/greenplum面试]senior engineer为什么加个结束符leetcode就run time error呢?
相关话题的讨论汇总
话题: duplicate话题: unique话题: array话题: 理解话题: 身高
进入JobHunting版参与讨论
1 (共1页)
j*********5
发帖数: 362
1
其实后来我想了一下,没想象那么简单。Leetcode上实际上没有。
给两个数组,A是Sorted,B也是Sorted,要求Merge这两个,非常简单吧?立刻想到
Leetcode的merge two sorted array和merge sorted linked list之类的。
其实不然。
有要求,要求就是merge成两个数组,一个存unique value,一个存duplicated。这基
本上是对方要求的原话,没有更多信息了。
我的错误在于没理解题意,我觉得有好几种理解方法:
假设:
A是[1, 3, 4, 4, 5, 6, 6]
B是[1, 2, 4, 5, 6, 7]
我理解成输出:
Unique Array[2, 3, 7]
Duplicate Array[1, 1, 4, 4, 4, 5, 5, 6, 6, 6]
因为原话说“把unique的value都存到一个数组,duplicate的存到另一个”,此外,
number是有意义的(每个人的身高),所以我理解为Duplicate的数字是不能随便合并
的,原题也没有任何暗示说可以合并数字。
另一种理解方式(也是interviewer的expected)是
Unique Array[1, 2, 3, 4, 5, 6, 7] (所有出现过的value "uniquely")
Duplicate Array[1, 4, 5, 6] (所有出现过的duplicate value "once only")
但是平心而论,我个人觉得这种理解其实不是很正常的思维方式,因为数据都是身高,
per person,either你保留所有的每个人的身高,or你可以统计有多少unique身高,或
是有多少duplicate身高,但是duplicated身高也要出现在Unique Array里面,尤其令
人费解。
其实还有其他理解方式,我就不提了。
所以我的最关键的错误就在于这里:理解错了题意。
当然,我最大的错误就是急于分析,而没有举例,问他expected是什么。如果我快速写
个例子,问他输出是什么,也许就可以避免这个问题了。
但是,他一直催促写代码,感觉也不是很愿意回答我的问题或是听我的分析,所以我就
慌了,只能赶紧写代码,最后就悲剧了。
其实说实话,我觉得写个trie还更不容易出事儿,就是因为再难,大家也理解你想干嘛
,trie能有什么误解?说实话,我宁愿碰什么Word Search II也不愿意碰这种题,如果
interview不愿意交流,就惨了。
其次,可能我的思维有定式,受什么“remove all duplicates from Linked List”这
种Leetcode题影响太深,自己自作聪明,以为duplicates肯定要一起都去第二个数组。
当然,我以前onsite也碰过一个类似的情景,就是一个人拿blog举例,其实是想让我实
现LRU。 LRU俺倒是会,问题是谁能想到Blog是LRU?我思维定式中就觉得blog的任何文
章都是根据发表时间排序的,他的意思是这篇blog文章被看过了就该被放到latest,新
文章也是latest。我就惊呆了。
如果说是browsing history之类的,早就懂了。
唉。看来还是要机灵点。
j*****8
发帖数: 3635
2
一开始你没要求和他一起跑一个例子来确保你们 on the same page?如果没有,那是
你的问题。
如果有,他不配合,那是他的问题
而且你这个帖子里的第二种理解方式也有问题阿,漏掉了3
从你的帖子,我感觉他要求的就是
unique array 存所有出现过的value (一次或多次)
duplicate的存所有出现过多于一次的value

【在 j*********5 的大作中提到】
: 其实后来我想了一下,没想象那么简单。Leetcode上实际上没有。
: 给两个数组,A是Sorted,B也是Sorted,要求Merge这两个,非常简单吧?立刻想到
: Leetcode的merge two sorted array和merge sorted linked list之类的。
: 其实不然。
: 有要求,要求就是merge成两个数组,一个存unique value,一个存duplicated。这基
: 本上是对方要求的原话,没有更多信息了。
: 我的错误在于没理解题意,我觉得有好几种理解方法:
: 假设:
: A是[1, 3, 4, 4, 5, 6, 6]
: B是[1, 2, 4, 5, 6, 7]

j*********5
发帖数: 362
3
我的确没强烈要求。他给的例子只有一个duplicate, 但没有expected output。
但我提出想看看duplicate怎么处理、设想一下思路,他催促我赶紧写代码,说一会儿
再细说duplicate的情况。
所以我的责任更大。
3那个问题改过来了,笔误。
他之前的文字说法是事先打好的,跟实际说法差别很大,很误导。这个是我比较郁闷的
地方。
原文大概是:“put all unique values in first array,and put all the
duplicated values in the second array”。

【在 j*****8 的大作中提到】
: 一开始你没要求和他一起跑一个例子来确保你们 on the same page?如果没有,那是
: 你的问题。
: 如果有,他不配合,那是他的问题
: 而且你这个帖子里的第二种理解方式也有问题阿,漏掉了3
: 从你的帖子,我感觉他要求的就是
: unique array 存所有出现过的value (一次或多次)
: duplicate的存所有出现过多于一次的value

j*****8
发帖数: 3635
4
这种coding一开始一定要一起跑几个例子,确保你理解的是他想要的
一般面试官都不会拒绝这个的

【在 j*********5 的大作中提到】
: 我的确没强烈要求。他给的例子只有一个duplicate, 但没有expected output。
: 但我提出想看看duplicate怎么处理、设想一下思路,他催促我赶紧写代码,说一会儿
: 再细说duplicate的情况。
: 所以我的责任更大。
: 3那个问题改过来了,笔误。
: 他之前的文字说法是事先打好的,跟实际说法差别很大,很误导。这个是我比较郁闷的
: 地方。
: 原文大概是:“put all unique values in first array,and put all the
: duplicated values in the second array”。

j*********5
发帖数: 362
5
嗯,明白。
还是交流的问题。
但是这时即使对方态度不好,也要问么?
感觉这人一开始就态度很差,就是“你赶紧写code”这种想法。

【在 j*****8 的大作中提到】
: 这种coding一开始一定要一起跑几个例子,确保你理解的是他想要的
: 一般面试官都不会拒绝这个的

j*********5
发帖数: 362
6
补充一点:
这题不让用任何数据结构。
比如,如果求unique的话,用set直接解决;
我设想是用hash table (array实现,因为身高是在一个很小范围内的值),扫一遍两
个数组都出来了。
j*********5
发帖数: 362
7
其实如果明白题意,做法就非常简单了:
双指针i j,都从0开始,比较大小;
如果A[i] >= B[j],准备加B[j]但要看B[j]是不是已经在Unique Array里面了,如果不
是,加进去;如果已经在Unique Array里,要看Duplicate Array里面有没有这个值,
如果没有,加,如果有,什么都不做;
A[i] < B[j] 同理;
最后要处理i和j,either会没到最后一个element,code 同上。
我这里有个巨大的错误,面试时。我试图处理当A[i] == B[j]时同时移动指针,这个非
常蠢,主要是一次移动一个会很简单不容易出错,一次移动两个就非常复杂,比如A[1,
1, ....], B[1,1, ....],到第二个1时,会比较难判断,一大堆if else,人就晕了。
p*******n
发帖数: 2697
8
我觉得没啥,就是他一开始就看你不爽不想要你。或者他这人就这性格,进去了也是要
走人,何必纠结

【在 j*********5 的大作中提到】
: 其实后来我想了一下,没想象那么简单。Leetcode上实际上没有。
: 给两个数组,A是Sorted,B也是Sorted,要求Merge这两个,非常简单吧?立刻想到
: Leetcode的merge two sorted array和merge sorted linked list之类的。
: 其实不然。
: 有要求,要求就是merge成两个数组,一个存unique value,一个存duplicated。这基
: 本上是对方要求的原话,没有更多信息了。
: 我的错误在于没理解题意,我觉得有好几种理解方法:
: 假设:
: A是[1, 3, 4, 4, 5, 6, 6]
: B是[1, 2, 4, 5, 6, 7]

j*********5
发帖数: 362
9
是。
但是我还是试图提高自己的面试心态和交流技巧嘛,得会打顺风局和逆风局,才是好
DOTA玩家。
感觉分析了一下还是有用,这题不像想象那么简单,其次,交流太重要了,妈的
expectation都没搞清楚我就写code,找死!

【在 p*******n 的大作中提到】
: 我觉得没啥,就是他一开始就看你不爽不想要你。或者他这人就这性格,进去了也是要
: 走人,何必纠结

i******s
发帖数: 301
10
简单来说就是,面试经验缺乏,想当然。面试官态度差很有可能: 1) 工作压力大,耐
心不够。2) 觉得问题没那么难,但是面试者交流理解题意没达到他预期,不耐烦了。3
) 看你不爽(多种原因。。。)
"但是平心而论,我个人觉得这种理解其实不是很正常的思维方式,因为数据都是身高,
per person,either你保留所有的每个人的身高,or你可以统计有多少unique身高,或
是有多少duplicate身高,但是duplicated身高也要出现在Unique Array里面,尤其令
人费解。"
这个说句实话,我觉得面试官期待的倒是更符合逻辑(我本人的)。在这种情况下,建议
跑几个例子。还有一点,面试的时候一开始要观察面试官属于那种类型的。你碰到的这
个,我建议,1) 跑几个例子,确定理解题意。2) 不要话太多,分析太多,仔细花几分
钟想清楚然后跟面试官说算法,他肯定了以后迅速写出。3) 中间不要啰嗦,不拖泥带
水。
最后一点,现在很多公司其实觉得也不缺人,所以比较diao。反正就是一个面试,该干
嘛干嘛。
相关主题
请教一道面试题FB电面
longest subarray with numbers arranged as a seq今天计划做20题
[emc/greenplum面试]senior engineer给定一个值和sorted队列,只有唯一的pair其和等于给定值
进入JobHunting版参与讨论
j*****8
发帖数: 3635
11
其实都不用check是不是已经加到unique / duplicate里
每次只加小的那个值 + pointA, pointB前移时跳过相同的值就可以搞定了
if a[i] == b[j]
put a[i] to unique & duplicate
i++;
while(i < a.length && a[i] == a[i-1]) i++;
j++;
while(j < b.length && b[j] == b[j-1]) j++;
else if a[i] > b[j]
put b[j] to unique
j++;
while(j < b.length && b[j] == b[j-1]) j++;
if exist duplicate put b[j] to duplicate
else
put a[i] to unique
i++;
while(i < a.length && a[i] == a[i-1]) i++;
if exist duplicate put a[i] to duplicate
最后check是否某个数组有剩下的,加进去就行(去重)

1,

【在 j*********5 的大作中提到】
: 其实如果明白题意,做法就非常简单了:
: 双指针i j,都从0开始,比较大小;
: 如果A[i] >= B[j],准备加B[j]但要看B[j]是不是已经在Unique Array里面了,如果不
: 是,加进去;如果已经在Unique Array里,要看Duplicate Array里面有没有这个值,
: 如果没有,加,如果有,什么都不做;
: A[i] < B[j] 同理;
: 最后要处理i和j,either会没到最后一个element,code 同上。
: 我这里有个巨大的错误,面试时。我试图处理当A[i] == B[j]时同时移动指针,这个非
: 常蠢,主要是一次移动一个会很简单不容易出错,一次移动两个就非常复杂,比如A[1,
: 1, ....], B[1,1, ....],到第二个1时,会比较难判断,一大堆if else,人就晕了。

L*****e
发帖数: 8347
12
你想得太多了,不是说是sorted array么?你只需要和加到unique array里最后一个比
就知
道是不是unique了,哪里需要set或者hash table?
两个index从0开始loop两个sorted array,谁指的小,current value就是小的那个,
谁指的小,谁的index往前移。
然后看current value是不是大于unique array里最后一个,大的话,就加进去;
如果等于unique array里最后一个,再比是不是等于duplicate array里最后一个,大
的话就加到duplicate array里,等于的话就ignore。

【在 j*********5 的大作中提到】
: 补充一点:
: 这题不让用任何数据结构。
: 比如,如果求unique的话,用set直接解决;
: 我设想是用hash table (array实现,因为身高是在一个很小范围内的值),扫一遍两
: 个数组都出来了。

L*****e
发帖数: 8347
13
A[I]==B[j]时,两个指针一起移一点问题没有,不增加任何if else判断。。。

1,

【在 j*********5 的大作中提到】
: 其实如果明白题意,做法就非常简单了:
: 双指针i j,都从0开始,比较大小;
: 如果A[i] >= B[j],准备加B[j]但要看B[j]是不是已经在Unique Array里面了,如果不
: 是,加进去;如果已经在Unique Array里,要看Duplicate Array里面有没有这个值,
: 如果没有,加,如果有,什么都不做;
: A[i] < B[j] 同理;
: 最后要处理i和j,either会没到最后一个element,code 同上。
: 我这里有个巨大的错误,面试时。我试图处理当A[i] == B[j]时同时移动指针,这个非
: 常蠢,主要是一次移动一个会很简单不容易出错,一次移动两个就非常复杂,比如A[1,
: 1, ....], B[1,1, ....],到第二个1时,会比较难判断,一大堆if else,人就晕了。

j*********5
发帖数: 362
14
是啊。
我后来一想,的确如此。
很简单。
还是这种题不熟。

【在 L*****e 的大作中提到】
: 你想得太多了,不是说是sorted array么?你只需要和加到unique array里最后一个比
: 就知
: 道是不是unique了,哪里需要set或者hash table?
: 两个index从0开始loop两个sorted array,谁指的小,current value就是小的那个,
: 谁指的小,谁的index往前移。
: 然后看current value是不是大于unique array里最后一个,大的话,就加进去;
: 如果等于unique array里最后一个,再比是不是等于duplicate array里最后一个,大
: 的话就加到duplicate array里,等于的话就ignore。

j*********5
发帖数: 362
15
是。
我的意思是,其实A[i] == B[j]可以归到另外两个情况(大于、小于)之一,换句话说
,根本没必要判断等于这种情况。

【在 L*****e 的大作中提到】
: A[I]==B[j]时,两个指针一起移一点问题没有,不增加任何if else判断。。。
:
: 1,

d****r
发帖数: 300
16
你思路是对的,这样逻辑更简洁。每个loop,只要拿到较小的那个,和上回的那个比一
下,放到相应队列就行了。

【在 j*********5 的大作中提到】
: 是。
: 我的意思是,其实A[i] == B[j]可以归到另外两个情况(大于、小于)之一,换句话说
: ,根本没必要判断等于这种情况。

1 (共1页)
进入JobHunting版参与讨论
相关主题
为什么加个结束符leetcode就run time error呢?请教一道题
算法题:两列找共同元素有O(n)的算法吗?请教一道面试题
雅虎 user 组面经longest subarray with numbers arranged as a seq
A家onsite,已悲剧[emc/greenplum面试]senior engineer
问一道刚面试完的algorithm 的题, 面试官非要最优解,我想不出来啊FB电面
leetcode: Remove Duplicates from Sorted Array今天计划做20题
google 面试题给定一个值和sorted队列,只有唯一的pair其和等于给定值
amazon tel interview一道面试题
相关话题的讨论汇总
话题: duplicate话题: unique话题: array话题: 理解话题: 身高