关于功能设计的问题

Gin*_*Gin 4 c++

我刚刚接受了一个关于如何设计一个简单函数的面试问题 - 在Int Array中找到第二大数字.

int findSecondLargest(int * arr, int len){
    int second = 0;
    ...

    return second;
}
Run Code Online (Sandbox Code Playgroud)

但是,我被问到以下有关如何处理问题的问题.

  1. 如果len小于2(我想我们可以返回一个特殊值,如0或MinInt.)
  2. 但是,如果第二大是0(因为在这种情况下,我无法区分错误和正常返回值.所以我可能会抛出异常)
  3. 如果数组是{1,1,1}(因为1是最大的数字,不是第二大数.所以我可能会抛出异常)

我真的感到困惑.我认为不可能处理所有情况.我们通常必须记录函数的用法,而不是抛出异常.

希望有些建议.谢谢

//函数体由我自己编写.我非常喜欢Donotalo和PigBen设计的设计

Ben*_*ley 11

在标准库模型之后,当搜索序列时,我们不返回我们正在寻找的值,我们返回一个迭代器到该值(在这种情况下是一个指针).如果我们没有找到该值,我们将迭代器返回到最后一个元素之后,签名将如下所示:

// end is not the last element, it is one past the last element
int * findSecondLargest(int * begin, int * end);
Run Code Online (Sandbox Code Playgroud)