栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【leetcode系列】小菜鸡的leetcode第10题:第一个错误的版本

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【leetcode系列】小菜鸡的leetcode第10题:第一个错误的版本

依旧二分法查找的演化。

思路是类似于神经网络的激活函数。

当位于该点之前,全部为False(0),位于该点之后,全部为True(1),改点时,有且仅有该点,左边相邻为False,右边相邻为True

#解法1:遍历最少,储存最少
# The isBadVersion API is already defined for you.
# @param version, an integer
# @return an integer
# def isBadVersion(version):

class Solution:
    def firstBadVersion(self, n):
        """
        :type n: int
        :rtype: int
        """
        low,high=1,n
        #if n==1 or n==2:
        #    return 1
        #else:
        while(low<=high):
            mid = low+((high-low)//2)
            if isBadVersion(mid)==False and isBadVersion(mid-1)==False:
                low=mid+1
            elif isBadVersion(mid)==True and isBadVersion(mid-1)==True:
                high=mid-1
            else: 
                #isBadVersion(mid-1)=='false' and isBadVersion(mid+1)=='true':
                return mid

解法一结果:

#解法2:常规解法,思路同“查找插入位置”,大于该指针位置的都为ture,小于该指针位置的都为false
# The isBadVersion API is already defined for you.
# @param version, an integer
# @return an integer
# def isBadVersion(version):

class Solution:
    def firstBadVersion(self, n):
        """
        :type n: int
        :rtype: int
        """
        low,high=1,n
        while(low 

解法二结果:

官方解法,指针遍历后,基于边界的判断(java版本,思路相同)
public class Solution {

    public int searchInsert(int[] nums, int target) {
        int len = nums.length;
        // 特殊判断
        if (nums[len - 1] < target) {
            return len;
        }

        // 程序走到这里一定有 nums[len - 1] >= target,插入位置在区间 [0..len - 1]
        int left = 0;
        int right = len - 1;
        // 在区间 nums[left..right] 里查找第 1 个大于等于 target 的元素的下标
        while (left < right) {
            int mid = left + (right - left) / 2;
            if (nums[mid] < target){
                // 下一轮搜索的区间是 [mid + 1..right]
                left = mid + 1;
            } else {
                // 下一轮搜索的区间是 [left..mid]
                right = mid;
            }
        }
        return left;
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/703941.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号