zoukankan      html  css  js  c++  java
  • 278. First Bad Version

    https://leetcode.com/problems/first-bad-version/#/description

    You are a product manager and currently leading a team to develop a new product. Unfortunately, the latest version of your product fails the quality check. Since each version is developed based on the previous version, all the versions after a bad version are also bad.

    Suppose you have n versions [1, 2, ..., n] and you want to find out the first bad one, which causes all the following ones to be bad.

    You are given an API bool isBadVersion(version) which will return whether version is bad. Implement a function to find the first bad version. You should minimize the number of calls to the API.

    Sol 1:

    Binary search

    class Solution(object):
        def firstBadVersion(self, n):
            """
            :type n: int
            :rtype: int
            """
            
            
            if isBadVersion(1):
                return 1
            l = 1
            r = n
            while l < r - 1:
                mid = (l+r)/2
                if isBadVersion(mid):
                    r = mid
                else:
                    l = mid
            return r

    Sol 2:

    Recursion

    class Solution(object):
        def rec(self,l,r):
            if(l>r):
                return 0
            else:
                mid=(l+r)/2
                if(isBadVersion(mid)):
                    if(l==r):
                        return l
                    else:
                        return self.rec(l,mid)
                else:
                    return self.rec(mid+1,r)
                
        def firstBadVersion(self, n):
            """
            :type n: int
            :rtype: int
            """
            ans=self.rec(1,n)
            return ans

     

  • 相关阅读:
    SQL-排名函数
    SQL-简单查询
    SQL-判断表是否存在
    HDU1557权利选举
    Bresenham画直线,任意斜率
    LCS最长公共子序列HDU1159
    zoj1276矩阵连乘dp
    OJ的文件流操作
    dp题目
    翻纸牌 高校俱乐部 英雄会 csdn
  • 原文地址:https://www.cnblogs.com/prmlab/p/6900677.html
Copyright © 2011-2022 走看看