zoukankan      html  css  js  c++  java
  • 第一个符合要求的元素

    原问题是,生产线中出现了一个残次品,导致在那之后的产品都是残次品,要求找出第一个残次品。问题中还给出了用于判断的 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);
    }
     
  • 相关阅读:
    centos7 yum错误相关
    centos7 jenkins
    vim 常用命令
    Effective STL(第7条)
    【hihoCoder】1049.后序遍历
    C++ 单元测试 Cpputest
    【hihoCoder】1041. 国庆出游
    LeetCode(43. Multiply Strings)
    【LeetCode】16. 4Sum
    【LeetCode】1. Two Sum
  • 原文地址:https://www.cnblogs.com/wuOverflow/p/4797598.html
Copyright © 2011-2022 走看看