由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问个dutch flag
相关主题
找出这个Dutch Flag解法的bug?flag很多白人连烙印一半实力都没有
[Algo]dutch flag problem~~~~~~~~问个G家的题~~~~~~~~~~~
请问pure storage 的那道用spin lock and flags to implement mutex怎么做问个C++题
Quick Sort的partition问题问个C++ virtual function的问题
关于高德纳的洗牌算法问个外循环和内问题
fancy swap?问个c++的问题
java: use vector to shuffle a deck of Card 问题问个careercup上的老题目,看不懂答案
3-way Partition 算法不容易问个Array Puzzle题
相关话题的讨论汇总
话题: white话题: blue话题: int话题: red话题: swap
进入JobHunting版参与讨论
1 (共1页)
z********c
发帖数: 72
1
都是老题了,FB面了这个,我以前做过,很自信。结果写码以后烙印说我有bug,找半
天没找出来,悲剧啊。。。到现在都不知道哪错了
problem: 给一个int array,对于每个元素,调用
is_red
is_white
is_blue
有且仅有一个为true
要求把这个array重排,使得顺序变成[all red, all white, all blue]
我的代码是:
void dutchFlag (int A[], int n)
{
int red = -1;
int blue = n;
int white = 0;
while (white < blue) {
if (is_red (A[white])) {
swap (A[white], A[red + 1]);
white ++;
red ++;
} else
if (is_blue (A[white])) {
swap (A[white], A[blue - 1]);
blue --;
} else {
white ++;
}
}
}
求指导这段代码哪错了呢?他提示我这段代码会提前退出
S******t
发帖数: 151
2
大牛,请回答,您是不是arxor!!!!
z********c
发帖数: 72
3
?arxor?不知道这个id啊,我也不是大牛!!!

【在 S******t 的大作中提到】
: 大牛,请回答,您是不是arxor!!!!
l*****a
发帖数: 14598
4
他忽悠你呢?还是他搞错了?
每次white++ or blue--
the only possible outlet is white==blue
but that is really the end //

【在 z********c 的大作中提到】
: 都是老题了,FB面了这个,我以前做过,很自信。结果写码以后烙印说我有bug,找半
: 天没找出来,悲剧啊。。。到现在都不知道哪错了
: problem: 给一个int array,对于每个元素,调用
: is_red
: is_white
: is_blue
: 有且仅有一个为true
: 要求把这个array重排,使得顺序变成[all red, all white, all blue]
: 我的代码是:
: void dutchFlag (int A[], int n)

z********c
发帖数: 72
5
烙印是个newbie面试官,旁边有个老美watch,我一写完,两人同时说有bug,我就囧了
找了两分钟,没找出来,他提示我,我还没找出来,然后烙印拍照了。。。。当时我都
快哭了

【在 l*****a 的大作中提到】
: 他忽悠你呢?还是他搞错了?
: 每次white++ or blue--
: the only possible outlet is white==blue
: but that is really the end //

S******t
发帖数: 151
6
好吧……我认错人了,囧 =____=

【在 z********c 的大作中提到】
: ?arxor?不知道这个id啊,我也不是大牛!!!
Z*****Z
发帖数: 723
7
程序应该是没有问题的。我觉得是三哥看走眼了。。。
鸡蛋里挑骨头一下,个人觉得变量white应该叫current更好,因为它只是你遍历时候的
一个指针。
cmft

【在 z********c 的大作中提到】
: 都是老题了,FB面了这个,我以前做过,很自信。结果写码以后烙印说我有bug,找半
: 天没找出来,悲剧啊。。。到现在都不知道哪错了
: problem: 给一个int array,对于每个元素,调用
: is_red
: is_white
: is_blue
: 有且仅有一个为true
: 要求把这个array重排,使得顺序变成[all red, all white, all blue]
: 我的代码是:
: void dutchFlag (int A[], int n)

l*****a
发帖数: 14598
8
你应该给他解释”没问题“
或者要求他给出反例。。

【在 z********c 的大作中提到】
: 烙印是个newbie面试官,旁边有个老美watch,我一写完,两人同时说有bug,我就囧了
: 找了两分钟,没找出来,他提示我,我还没找出来,然后烙印拍照了。。。。当时我都
: 快哭了

z********c
发帖数: 72
9
面试的时候哪有这胆啊,如果真有问题,那应该就直接被拒了

【在 l*****a 的大作中提到】
: 你应该给他解释”没问题“
: 或者要求他给出反例。。

s****m
发帖数: 160
10
这道题允许用count sort吗?计算各个颜色的数目,然后依次写入。
相关主题
fancy swap?flag很多白人连烙印一半实力都没有
java: use vector to shuffle a deck of Card 问题~~~~~~~~问个G家的题~~~~~~~~~~~
3-way Partition 算法不容易问个C++题
进入JobHunting版参与讨论
l*****a
发帖数: 14598
11
这个题一般来说会禁止你这么做
当然你可以提出来。。。

【在 s****m 的大作中提到】
: 这道题允许用count sort吗?计算各个颜色的数目,然后依次写入。
s****m
发帖数: 160
12
我觉得问题是在swap(A[i], A[j])上,应该改成
swap(A, i, j)。楼主可能是太紧张了。
z********c
发帖数: 72
13
不可能是这么trivial的地方的

【在 s****m 的大作中提到】
: 我觉得问题是在swap(A[i], A[j])上,应该改成
: swap(A, i, j)。楼主可能是太紧张了。

z********c
发帖数: 72
14
如果大家觉得没问题,我觉得那很有可能是我当时笔误了,检查的时候只管算法,没注
意检查变量啥的是不是写错了

【在 Z*****Z 的大作中提到】
: 程序应该是没有问题的。我觉得是三哥看走眼了。。。
: 鸡蛋里挑骨头一下,个人觉得变量white应该叫current更好,因为它只是你遍历时候的
: 一个指针。
: cmft

s****m
发帖数: 160
15
你是推迟了一周去FB面试的吧。其它题目怎么样?
我想以后碰到类似的境况,可以walk through几个实例(包括边界条件的),
这样可以看出到底是他们是在bluffing,还是自己的程序有问题。不能
保证他们是不是在试探你是否能够顶住压力,能够说服别人。
c****p
发帖数: 6474
16
这确实是个问题。。。。

【在 z********c 的大作中提到】
: 不可能是这么trivial的地方的
l*********8
发帖数: 4642
17
swap function is like this:
void swap ( int& a, int& b );
So swap(A[i], A[j]) should be fine.

【在 s****m 的大作中提到】
: 我觉得问题是在swap(A[i], A[j])上,应该改成
: swap(A, i, j)。楼主可能是太紧张了。

l*****a
发帖数: 14598
18
不是说循环中止条件有问题吗

【在 c****p 的大作中提到】
: 这确实是个问题。。。。
l*********8
发帖数: 4642
19
lz程序是对的,循环中止条件有问题的是这样:
void dutchFlag (int A[], int n)
{
int red = 0;
int blue = n-1;
int white = 0;
while (white < blue) {
if (is_red (A[white])) {
swap (A[white], A[red]);
white ++;
red ++;
} else
if (is_blue (A[white])) {
swap (A[white], A[blue]);
blue --;
} else {
white ++;
}
}
}

【在 l*****a 的大作中提到】
: 不是说循环中止条件有问题吗
z****h
发帖数: 164
20
自己也做了一遍,没发现lz的程序有什么问题。
不过white这个变量确实让人难受。如前所述,改成curr更好。
会不会是white让面试官产生误解?
抱歉没能提供什么有用信息。
1 (共1页)
进入JobHunting版参与讨论
相关主题
问个Array Puzzle题关于高德纳的洗牌算法
问个google面试题fancy swap?
再问个简单的C问题java: use vector to shuffle a deck of Card 问题
问个G的电面题3-way Partition 算法不容易
找出这个Dutch Flag解法的bug?flag很多白人连烙印一半实力都没有
[Algo]dutch flag problem~~~~~~~~问个G家的题~~~~~~~~~~~
请问pure storage 的那道用spin lock and flags to implement mutex怎么做问个C++题
Quick Sort的partition问题问个C++ virtual function的问题
相关话题的讨论汇总
话题: white话题: blue话题: int话题: red话题: swap