LeetCode 278最初の間違ったバージョン(パイソン)

トピックリンク

件名の説明:

あなたは、彼は現在、新製品を開発するチームをリードして、プロダクトマネージャーです。残念ながら、お使いの製品の最新バージョンは、品質検査に合格しませんでした。各バージョンの開発の以前のバージョンをベースにしているため、その間違ったバージョンのすべてのそれ以降のバージョンが間違っています。

あなたが持っているn個のバージョン[1、2、...、N]とし、あなたは最初のバージョン・エラーの後、間違ったバージョンにすべてのリードの知りたいです。

あなたは、ユニットテストでバージョン番号のバージョンエラーかどうかを決定するブールisBadVersion(バージョン)インターフェイスを呼び出すことができます。最初の誤ったバージョンを見つけるために、機能を実装します。あなたは、API呼び出しの回数を減らすようにしてください。

例:

所与のN = 5、及び= 4の最初のバージョンは、間違ったバージョンです。

isBadVersionを呼び出します(3) - >偽
の呼び出しisBadVersion(5) - >真
>真- (4)isBadVersionを呼び出します

そこで、図4は、第1の間違ったバージョンです。

問題解決のアイデア:

二分法、左側の境界を示す悪いバージョンであれば、中間に等しいその端ように中間+ 1を開始することが等しくなるように現在のバージョンは、右側の境界を示す、良好な値である場合

# The isBadVersion API is already defined for you.
# @param version, an integer
# @return a bool
# def isBadVersion(version):

class Solution(object):
    def firstBadVersion(self, n):
        """
        :type n: int
        :rtype: int
        """
        begin,end=1,n
        while begin<end:
            mid=(begin+end)//2
            if isBadVersion(mid):#是坏版本,边界在左边
                end=mid
            else:
                begin=mid+1#不是坏版本,边界在右边
        return begin

ここに画像を挿入説明

おすすめ

転載: blog.csdn.net/weixin_44740082/article/details/91549247