第一个符合要求的元素

原问题是,生产线中出现了一个残次品,导致在那之后的产品都是残次品,要求找出第一个残次品。问题中还给出了用于判断的 API isBadVersion(version) 我把问题简化了,理解为在一个数组中,前一段是正数,后一段是负数,求第一个负数的位置。奇怪的是我在 Xcode 上运行好几种情况都是成功的,可是 leetcode 中依然显示 Runtime Error,而错误提示又不是人话,所以我也搞不清究竟是哪里没符合要求。也希望如果有哪位朋友看到了这篇博客,可以指点一下究竟是哪里的问题。以下是我的代码。

vector<int> products{1, 3, 8, -90};
bool isBadVersion(int version)
{
    return products[version] < 0;
}

int firstBadVersion(int n) {
    if (n == 1){
        return isBadVersion(n)? 1 : 0;
    }
    
    function<int(int)> find;
    find = [&](int i)
    {
        if (i == 0 || i == 1){
            return isBadVersion(1)? 1 : 2;
        }
        
        if (isBadVersion(i) && !isBadVersion(i - 1)){
            return i + 1;
        }
        return isBadVersion(i)? find(i / 2) : find((i + n) / 2);
    };
    return find(n / 2);
}

 

 

 
posted @ 2015-09-10 13:26  wu_overflow  阅读(189)  评论(0编辑  收藏  举报