yty2021 2022-01-10 22:36 采纳率: 42.9%
浏览 48

leetcode上一道简单题,不知道自己错在哪里,请帮我指出一下

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。

 

    int a = numsSize/2;
    if(target < nums[0]){
        return 0;
    }else if(target > nums[numsSize-1]){
        return numsSize;
    } 
    while(nums[a] != target && a != numsSize && a!= 0){
        if(nums[a-1] < target && nums[a+1] > target){
            if(nums[a] > target){
                return a;
            }else if(nums[a]<target){
                return a+1;
            }
        }
        else if(nums[a] > target){
            a /= 2;
        }else if(nums[a] < target){
            a = (numsSize+a)/2;
        }
    }
    
    return a;
    
}




  • 写回答

2条回答 默认 最新

  • 加油吧,小杜 2022-01-11 09:25
    关注

    你只需要使用一个for循环进行查找就行了。没必要这么复杂啊。
    如果找到比数值大的就直接返回当前索引。若整个数组都没有找到。则返回数组长度

    评论

报告相同问题?

问题事件

  • 创建了问题 1月10日

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?