zoukankan      html  css  js  c++  java
  • 155-278. 第一个错误的版本

    假设你是程序员,你们n次git提交之前的都是对的,n+1次之后提交的代码都有问题,下在需要知道是从那次开始出现错误的,请设计算法isBadVersion函数可以判断这个版本是否是错误的(firstBadVersion1是我写的,难受啊越学越菜啊)
    class Solution(object):
        def isBadVersion(self, n):
            if n < 2:
                return False
            return True
    
        def firstBadVersion1(self, n):
            """
            :type n: int
            :rtype: int
            """
            return self.mid_search(0, n) if n > 1 else n
    
        def mid_search(self, start, end):
            left = start
            right = end
            mid = (left + right) // 2
    
            flag = False
            while True:
                if self.isBadVersion(mid) is True and self.isBadVersion(mid - 1) is False:
                    flag = True
                    break
    
                if self.isBadVersion(mid) is False:
                    left = mid + 1
                    right = right
    
                if self.isBadVersion(mid) is True:
                    left = left
                    right = mid - 1
                mid = (left + right) // 2
    
            return mid if flag else -1
    
        def firstBadVersion(self, n):
            """
            :type n: int
            :rtype: int
            """
            left, right = 1, n
            while left < right:
                mid = left + (right - left) / 2
                if self.isBadVersion(mid):
                    right = mid
                else:
                    left = mid + 1
            return left
    
    
    if __name__ == '__main__':
        s1 = Solution()
        nums = 4
        root = s1.firstBadVersion(nums)
        print(root)
        print("gfsdg")
    
  • 相关阅读:
    读书笔记-NIO的工作方式
    高精度运算-阶乘累积求和
    面试题-Java设计模式举例
    Web请求过程总结
    python 之栈的实现
    python之数据结构链表实现方式
    python 之分发包
    python之smtplib发邮件
    装饰器习题-接受参数的装饰器
    python之装饰器
  • 原文地址:https://www.cnblogs.com/liuzhanghao/p/14328646.html
Copyright © 2011-2022 走看看