LeetCode簡單題:278. 第一個(gè)錯(cuò)誤的版本(Python,C++,Java)

一.解法

https://leetcode-cn.com/problems/first-bad-version/
要點(diǎn):二分法
Python,C++,Java都用了二分法。
本題是找兩堆版本的分界處,每次找中間位置然后調(diào)整left和right位置,最好畫圖判斷邊界是左邊還是右邊。

二.Python實(shí)現(xiàn)

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

class Solution:
    def firstBadVersion(self, n):
        """
        :type n: int
        :rtype: int
        """
        left = 1
        right = n
        while left <= right:
            midpoint = (left+right) // 2
            if not isBadVersion(midpoint):
                left = midpoint + 1
            else:
                right = midpoint - 1  
        return left

三.C++實(shí)現(xiàn)

// The API isBadVersion is defined for you.
// bool isBadVersion(int version);

class Solution {
public:
    int firstBadVersion(int n) {
        int left,right,mid;
        left=1;
        right=n;
        while(left<right){
            mid=left+(right-left)/2;
            if(isBadVersion(mid)==true){
                right=mid;
            }
            else{left=mid+1;}
            }
        
        return left;
    
    }
};

四.java實(shí)現(xiàn)

/* The isBadVersion API is defined in the parent class VersionControl.
      boolean isBadVersion(int version); */

public class Solution extends VersionControl {
    public int firstBadVersion(int n) {
        int left,right,mid;
        left=1;
        right=n;
        while(left<right){
            mid=left+(right-left)/2;
            if(isBadVersion(mid)==true){
                right=mid;
            }
            else{left=mid+1;}
            }
        
        return left;
        
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容