由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 灭三哥也不容易
相关主题
问个算法题贡献Amazon的电面经验
combinations 有没有 iterative的方法阿 ?Binary Tree Level Order Traversal为什么老通不过
被G电面给毙了L两轮面经,都碰到了没见过的题,当场就跪了。。。。
用java面试真吃亏我又fail了面试
java remove elements in collections时间复杂度 2钟方法一样么G电面题 + 求祝福
Yelp 面试问一道题
过不了leetcode Zigzag Level Order TraversalFacebook Phone Interview
Leetcode: Symmetric Tree有没有好的iterative的解法?小弟求问LinkedIn那道Deep Iterator的题
相关话题的讨论汇总
话题: integer话题: arraylist话题: return
进入JobHunting版参与讨论
1 (共1页)
b**m
发帖数: 1466
1
凭心而论我遇到的三个钟还有不少不错的,只是我现在东家太烂了
删除一个arraylist的所有负数给俺这样的代码,和O(1)的复杂度
就这样头和头的头还要给一个junior level的offer,尼玛都10年java经验了。
m**********j
发帖数: 8645
2
这是种族之争,跟个人的好差没冠希。

【在 b**m 的大作中提到】
: 凭心而论我遇到的三个钟还有不少不错的,只是我现在东家太烂了
: 删除一个arraylist的所有负数给俺这样的代码,和O(1)的复杂度
: 就这样头和头的头还要给一个junior level的offer,尼玛都10年java经验了。

h*d
发帖数: 19309
3
上面为啥要给offer呢?里面有老印强推?

【在 b**m 的大作中提到】
: 凭心而论我遇到的三个钟还有不少不错的,只是我现在东家太烂了
: 删除一个arraylist的所有负数给俺这样的代码,和O(1)的复杂度
: 就这样头和头的头还要给一个junior level的offer,尼玛都10年java经验了。

l*****a
发帖数: 14598
4
他这个code work吗?去eclipse运行一下看看
input不需要判空吗?
参数是不是定义成List更合适一点
remove的参数不转成Obejct就变成了remove(index)了吧

【在 b**m 的大作中提到】
: 凭心而论我遇到的三个钟还有不少不错的,只是我现在东家太烂了
: 删除一个arraylist的所有负数给俺这样的代码,和O(1)的复杂度
: 就这样头和头的头还要给一个junior level的offer,尼玛都10年java经验了。

b**m
发帖数: 1466
5
我觉得是公司烂,只招contractor
头是中国人,头的头是老美。

【在 h*d 的大作中提到】
: 上面为啥要给offer呢?里面有老印强推?
l*****a
发帖数: 14598
6
问题是这code压根不work
remove后size变了,index变了,更不要说现在直接call list.remove(-*)了
直接就indexOutOfBoundsException了

【在 b**m 的大作中提到】
: 我觉得是公司烂,只招contractor
: 头是中国人,头的头是老美。

e********3
发帖数: 18578
7
这是错的实现,因为删除以后后面的元素就往前提了,这样i++以后其实跳过了一个元
素。。。

【在 b**m 的大作中提到】
: 凭心而论我遇到的三个钟还有不少不错的,只是我现在东家太烂了
: 删除一个arraylist的所有负数给俺这样的代码,和O(1)的复杂度
: 就这样头和头的头还要给一个junior level的offer,尼玛都10年java经验了。

x****o
发帖数: 29677
8
老中fresh比他强的多的是吧,为什么非给烙印OFFER?
e********3
发帖数: 18578
9
communication skill.

【在 x****o 的大作中提到】
: 老中fresh比他强的多的是吧,为什么非给烙印OFFER?
e********3
发帖数: 18578
10
+1,这三哥的基本功太不扎实了,还敢说自己写过10年Java。

【在 l*****a 的大作中提到】
: 问题是这code压根不work
: remove后size变了,index变了,更不要说现在直接call list.remove(-*)了
: 直接就indexOutOfBoundsException了

相关主题
Yelp 面试贡献Amazon的电面经验
过不了leetcode Zigzag Level Order TraversalBinary Tree Level Order Traversal为什么老通不过
Leetcode: Symmetric Tree有没有好的iterative的解法?L两轮面经,都碰到了没见过的题,当场就跪了。。。。
进入JobHunting版参与讨论
x****o
发帖数: 29677
11

关键是头有一个是老中,那么多老中找工作,junior一抓一把,给个老中就不行啊

【在 e********3 的大作中提到】
: communication skill.
e********3
发帖数: 18578
12
头是中国人还招这么烂的阿三真心说不过去。

【在 x****o 的大作中提到】
:
: 关键是头有一个是老中,那么多老中找工作,junior一抓一把,给个老中就不行啊

s*****p
发帖数: 108
13
复杂度是指空间吧?

【在 b**m 的大作中提到】
: 凭心而论我遇到的三个钟还有不少不错的,只是我现在东家太烂了
: 删除一个arraylist的所有负数给俺这样的代码,和O(1)的复杂度
: 就这样头和头的头还要给一个junior level的offer,尼玛都10年java经验了。

h*d
发帖数: 19309
14
确实说不过去

【在 e********3 的大作中提到】
: 头是中国人还招这么烂的阿三真心说不过去。
T*****u
发帖数: 7103
15
要从后往前吧
j****e
发帖数: 12067
16
连我这不写代码的都一下子就知道问题了,把这个offer给我吧。。。。。

【在 l*****a 的大作中提到】
: 问题是这code压根不work
: remove后size变了,index变了,更不要说现在直接call list.remove(-*)了
: 直接就indexOutOfBoundsException了

r****c
发帖数: 2585
17
arraylist 还remove啊,马上要改呀,linkedlist
l**s
发帖数: 421
18

从前往后应该也行吧,就是遇到负数的时候index得退一个

【在 T*****u 的大作中提到】
: 要从后往前吧
G**C
发帖数: 365
19
Time O(n), space O(1)
ArrayList removeNegative(ArrayList a) {
if (a == null)
return a;
int nextNegative = 0, nextNonNegative = 0;
while (nextNegative < a.size()) {
if (a.get(nextNegative) >= 0) {
nextNegative++;
continue;
}
nextNonNegative = Math.max(nextNonNegative, nextNegative + 1);
while (nextNonNegative < a.size() && a.get(nextNonNegative) < 0) {
nextNonNegative++;
}
if (nextNonNegative == a.size()) {
break;
} else {
int tmp = a.get(nextNegative);
a.set(nextNegative, a.get(nextNonNegative));
a.set(nextNonNegative, tmp);
nextNegative++;
nextNonNegative++;
}
}
if (nextNegative < a.size()) {
a.subList(nextNegative, a.size()).clear();
}
return a;
}
l*****a
发帖数: 14598
20
据信

【在 G**C 的大作中提到】
: Time O(n), space O(1)
: ArrayList removeNegative(ArrayList a) {
: if (a == null)
: return a;
: int nextNegative = 0, nextNonNegative = 0;
: while (nextNegative < a.size()) {
: if (a.get(nextNegative) >= 0) {
: nextNegative++;
: continue;
: }

相关主题
我又fail了面试Facebook Phone Interview
G电面题 + 求祝福小弟求问LinkedIn那道Deep Iterator的题
问一道题发个g的电面
进入JobHunting版参与讨论
G**C
发帖数: 365
21
大牛请指教!

【在 l*****a 的大作中提到】
: 据信
l*****a
发帖数: 14598
22
if(input==null) return null;
for(int i=input.size()-1;i>=0;i--) {
int element=input.get(i);
if(element<0) input.remove(i);
}
return input;

【在 G**C 的大作中提到】
: 大牛请指教!
G**C
发帖数: 365
23
大牛,你的版本也work,且适用于linkedlist,但remove开销有点大。
我的版本追求性能,因此复杂了些,主要针对interviewer的口味。
我还准备了一个生产代码版本,基于Guava库.
ArrayList removeNegative2(ArrayList a) {
if (a == null)
return a;
return Lists.newArrayList(Iterables.filter(a, new Predicate() {
@Override public boolean apply(Integer input) {
return input >= 0;
}
}));
}

【在 l*****a 的大作中提到】
: if(input==null) return null;
: for(int i=input.size()-1;i>=0;i--) {
: int element=input.get(i);
: if(element<0) input.remove(i);
: }
: return input;

l*********1
发帖数: 936
24
这么简单的问题写这么长Code?
搞两个指针就完了吧。

【在 G**C 的大作中提到】
: Time O(n), space O(1)
: ArrayList removeNegative(ArrayList a) {
: if (a == null)
: return a;
: int nextNegative = 0, nextNonNegative = 0;
: while (nextNegative < a.size()) {
: if (a.get(nextNegative) >= 0) {
: nextNegative++;
: continue;
: }

l*****a
发帖数: 14598
25

=======================
这个是怎么知道的呢?
另外面试中搞那些不是通俗易懂的东西很容易悲剧的
{

【在 G**C 的大作中提到】
: 大牛,你的版本也work,且适用于linkedlist,但remove开销有点大。
: 我的版本追求性能,因此复杂了些,主要针对interviewer的口味。
: 我还准备了一个生产代码版本,基于Guava库.
: ArrayList removeNegative2(ArrayList a) {
: if (a == null)
: return a;
: return Lists.newArrayList(Iterables.filter(a, new Predicate() {
: @Override public boolean apply(Integer input) {
: return input >= 0;
: }

l*********1
发帖数: 936
26
do you know how expensive remove is?

【在 l*****a 的大作中提到】
: if(input==null) return null;
: for(int i=input.size()-1;i>=0;i--) {
: int element=input.get(i);
: if(element<0) input.remove(i);
: }
: return input;

l*****a
发帖数: 14598
27
讲讲吧。
看起来下一个版本的java应该把它删掉了

【在 l*********1 的大作中提到】
: do you know how expensive remove is?
G**C
发帖数: 365
28
是两个指针 nextNegative 和nextNonNegative.
退出大循环后,从[nextNegative, size())都一并truncate.
请指教简化tips.

【在 l*********1 的大作中提到】
: 这么简单的问题写这么长Code?
: 搞两个指针就完了吧。

l*********1
发帖数: 936
29
我不太写java code, 不过思路是这样
一个source 指针,每次加一,
一个dest 指针,只有non-negative 才加一,
从source copy 到 destination,
最后call removeRange one time.
code (c++ style) is:
source = 0;
dest = 0;
while (source < array.size()) {
if (array[source] >= 0 ){
array[dest++] = array[source];
}
++source;
}
array.removeRange(dest, source);
you should check boundary cases:
1) array is empty
2) every element is negative
3) every element s positive

【在 G**C 的大作中提到】
: 是两个指针 nextNegative 和nextNonNegative.
: 退出大循环后,从[nextNegative, size())都一并truncate.
: 请指教简化tips.

G**C
发帖数: 365
30
对,基本差不多的思路,唯一的优化是
dest永远比src大,因此每次搜索dst时候从Max(src, last dst)开始就可以了。

【在 l*********1 的大作中提到】
: 我不太写java code, 不过思路是这样
: 一个source 指针,每次加一,
: 一个dest 指针,只有non-negative 才加一,
: 从source copy 到 destination,
: 最后call removeRange one time.
: code (c++ style) is:
: source = 0;
: dest = 0;
: while (source < array.size()) {
: if (array[source] >= 0 ){

相关主题
问个最近面试里的题目combinations 有没有 iterative的方法阿 ?
L家的高频题merge k sorted arrays giving iterators求讨论!被G电面给毙了
问个算法题用java面试真吃亏
进入JobHunting版参与讨论
a******d
发帖数: 896
31
头是中国人还招这么烂的阿三真心说不过去。
lz 推荐个小中吧,肯定秒杀啊。

【在 b**m 的大作中提到】
: 我觉得是公司烂,只招contractor
: 头是中国人,头的头是老美。

l*********1
发帖数: 936
32
dst 永远比src 小吧。
说老实话,我面试过别人,你的code 那么写肯定挂了,没有可读性
以后面试时尽量code 简洁易懂。

【在 G**C 的大作中提到】
: 对,基本差不多的思路,唯一的优化是
: dest永远比src大,因此每次搜索dst时候从Max(src, last dst)开始就可以了。

l*********1
发帖数: 936
33
arraylist 里 remove 一个元素是O(N)操作。
想想为什么是O(N), 能不能做的更好。

【在 l*****a 的大作中提到】
: 讲讲吧。
: 看起来下一个版本的java应该把它删掉了

l*********1
发帖数: 936
34
你东家是哪家阿?

【在 b**m 的大作中提到】
: 凭心而论我遇到的三个钟还有不少不错的,只是我现在东家太烂了
: 删除一个arraylist的所有负数给俺这样的代码,和O(1)的复杂度
: 就这样头和头的头还要给一个junior level的offer,尼玛都10年java经验了。

x****7
发帖数: 86
35
这个。。跟最后一个换一下,然后再remove最后一个就完了呗。
b**m
发帖数: 1466
36
linkedlist 按照index删除也很慢。

{

【在 G**C 的大作中提到】
: 大牛,你的版本也work,且适用于linkedlist,但remove开销有点大。
: 我的版本追求性能,因此复杂了些,主要针对interviewer的口味。
: 我还准备了一个生产代码版本,基于Guava库.
: ArrayList removeNegative2(ArrayList a) {
: if (a == null)
: return a;
: return Lists.newArrayList(Iterables.filter(a, new Predicate() {
: @Override public boolean apply(Integer input) {
: return input >= 0;
: }

s******e
发帖数: 493
37
Confused... r u writing it in java?
iterator.remove will do all the tricks.
s******7
发帖数: 1758
38
同意楼上,用iterator就可以了
Iterator iter = arrayList.iterator();
while(iter.hasNext())if(iter.next()<0)iter.remove();
搞什么双指针,什么遇到负的退一个都太复杂了
z*********e
发帖数: 10149
39
同意楼上两位,iterator是容器类需要删除元素的标准做法吧
c****p
发帖数: 6474
40
水木上有个一样的帖子,谁抄谁?
http://www.newsmth.net/bbstcon.php?board=ITExpress&gid=1401166
相关主题
用java面试真吃亏过不了leetcode Zigzag Level Order Traversal
java remove elements in collections时间复杂度 2钟方法一样么Leetcode: Symmetric Tree有没有好的iterative的解法?
Yelp 面试贡献Amazon的电面经验
进入JobHunting版参与讨论
j********x
发帖数: 2330
41
哥们你不知道iterator啥东西么?。。。
这种写法评价比lz说的那个烙印还要差啊。。。

【在 G**C 的大作中提到】
: Time O(n), space O(1)
: ArrayList removeNegative(ArrayList a) {
: if (a == null)
: return a;
: int nextNegative = 0, nextNonNegative = 0;
: while (nextNegative < a.size()) {
: if (a.get(nextNegative) >= 0) {
: nextNegative++;
: continue;
: }

b**m
发帖数: 1466
42
现在转载都不注明了

水木上有个一样的帖子,谁抄谁?http://www.newsmth.net/bbstcon.php?board=ITExpress

【在 c****p 的大作中提到】
: 水木上有个一样的帖子,谁抄谁?
: http://www.newsmth.net/bbstcon.php?board=ITExpress&gid=1401166

c**********y
发帖数: 38
43
先把不是负数的copy到是负数的位置,最后把剩余的remove掉,这样应该是最快的,小
弟就在找junior的职位,可惜了一个offer,三哥们说10年工作经验的意思就是在谦虚
的说他刚毕业在找junior的工作
1 (共1页)
进入JobHunting版参与讨论
相关主题
小弟求问LinkedIn那道Deep Iterator的题java remove elements in collections时间复杂度 2钟方法一样么
发个g的电面Yelp 面试
问个最近面试里的题目过不了leetcode Zigzag Level Order Traversal
L家的高频题merge k sorted arrays giving iterators求讨论!Leetcode: Symmetric Tree有没有好的iterative的解法?
问个算法题贡献Amazon的电面经验
combinations 有没有 iterative的方法阿 ?Binary Tree Level Order Traversal为什么老通不过
被G电面给毙了L两轮面经,都碰到了没见过的题,当场就跪了。。。。
用java面试真吃亏我又fail了面试
相关话题的讨论汇总
话题: integer话题: arraylist话题: return