照相八字秘诀:低头瞪眼,强光打脸!# Joke - 肚皮舞运动
z*c
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 ++;
}
}
}
求指导这段代码哪错了呢?他提示我这段代码会提前退出
天没找出来,悲剧啊。。。到现在都不知道哪错了
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 ++;
}
}
}
求指导这段代码哪错了呢?他提示我这段代码会提前退出