博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
35. Search Insert Position
阅读量:5022 次
发布时间:2019-06-12

本文共 1013 字,大约阅读时间需要 3 分钟。

肯定一看就是二分搜索。问题在于数列中并没有找到这个数的情况

当退出的时候,如果nums[mid] < target的时候,说明刚才退出时因为改变了low,导致low > high所以退出了循环,所以就直接返回low

如果nums[mid] > target,说明因为改变了high退出的,所以结果是high这个位置的后面那个可以插入

考虑到如果是-1这种情况就是查在对头,所以把-1纠正成0

 

1     public int searchInsert(int[] nums, int target) { 2         if(nums == null || nums.length == 0) { 3             return -1; 4         } 5         int low = 0; 6         int high = nums.length - 1; 7         int mid = 0; 8          9         while(low <= high) {10             mid = low + (high - low) / 2;11             if(nums[mid] < target) {12                 low = mid + 1;13             } else if(nums[mid] > target) {14                 high = mid - 1;15             } else {16                 return mid;17             }18         }19         int res = 0;20         if(nums[mid] > target) {21             res = high + 1;22         } else {23             res = low;24         }25         return (res < 0)? 0: res;26     }

bug记录:

21行 res = high + 1而不是high

转载于:https://www.cnblogs.com/warmland/p/5222201.html

你可能感兴趣的文章
UVALive 4730 Kingdom +段树和支票托收
查看>>
[APIO2010]特别行动队
查看>>
[SCOI2016]幸运数字
查看>>
SpringBoot 集成ehcache
查看>>
初步swift语言学习笔记2(可选类型?和隐式可选类型!)
查看>>
Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
查看>>
在Vs2012 中使用SQL Server 2012 Express LocalDB打开Sqlserver2012数据库
查看>>
在Macos下完美解决Adobe Dreamweaver CC 2018 汉化及操作方法
查看>>
【转】 Newtonsoft.Json高级用法
查看>>
CodeBlocks X64 SVN 编译版
查看>>
Excel催化剂开源第42波-与金融大数据TuShare对接实现零门槛零代码获取数据
查看>>
bug记录_signalr执行$.connnection.testhub结果为空
查看>>
【转】常用的latex宏包
查看>>
[TMS320C674x] 一、GPIO认识
查看>>
酷狗的皮肤文件存放在哪
查看>>
iOS RunLoop简介
查看>>
C++的引用
查看>>
T-SQL查询进阶--深入浅出视图
查看>>
MapKeyboard 键盘按键映射 机械革命S1 Pro-02
查看>>
Android读取url图片保存及文件读取
查看>>