cdsn_Python 2022-08-06 12:05 采纳率: 69%
浏览 50
已结题

关于leetcode二分法的问题,如何解决?

 问题遇到的现象和发生背景
leetcode题目,给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。
示例 1:
输入:nums = [5,7,7,8,8,10], target = 8
输出:[3,4]
示例 2:
输入:nums = [5,7,7,8,8,10], target = 6
输出:[-1,-1]
 问题相关代码,请勿粘贴截图



def findall(nums,target):
    min=0
    max=len(nums)
    list=[-1,-1]
    n=True
    while max>=min and n:
        mid=(max+min)//2
        print(0)
        if nums[mid]<target and nums[mid+1]<target:
            min=mid+1
        elif nums[mid]<target and nums[mid+1]==target:
            list[0]=mid+1
        elif nums[mid]==target and nums[mid+1]>target:
            list[1]=mid
        elif nums[mid]>target and nums[mid+1]>target:
            max=mid-1
        else:
            min1=0
            max1=mid
            min2=mid
            max2=len(nums)-1
            a=True
            b=True
            while max1>=min1 and a:
                mid1=(max1+min1)//2
                print(2)
                # print(max1,mid1,min1)
                if mid+1<len(nums):
                    # print(max1, mid1, min1)

                    if nums[mid1] < target and nums[mid1 + 1] < target:
                        min1 = mid1+1
                    elif nums[mid1] < target and nums[mid1 + 1] == target:
                        list[0] = mid1 + 1
                        a=False
                    else:
                        max1=mid1-1

            while max2>=min2 and b:
                print(1)
                mid2=(max2+min2)//2
                if mid2+1<len(nums):
                    if nums[mid2] > target and nums[mid2 + 1] > target:
                        max2 = mid2
                    elif nums[mid2] == target and nums[mid2 + 1] > target:
                        list[1] = mid2
                        b=False
                    else:
                        min2=mid2+1
            n=False
    return list

运行结果及报错内容
输入print(findall([1,1,2,2,2,3,3,3,3,4,4,4,4],4))
结果一只循环
我的解答思路和尝试过的方法

我想要达到的结果
还是按照我的思路,帮忙看看是哪里出了问题

  • 写回答

1条回答 默认 最新

  • 有问必答小助手 2022-08-11 17:12
    关注

    你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


    本次提问扣除的有问必答次数,已经为您补发到账户,我们后续会持续优化,扩大我们的服务范围,为您带来更好地服务。

    评论

报告相同问题?

问题事件

  • 系统已结题 8月14日
  • 创建了问题 8月6日

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?