leetcode --First Bad Version
2015-10-15 13:53
483 查看
小白一枚,从今天开始记录刷日记啦~~~
这道题一看就知道是要用二分查找,就迅速开始写了,写完了调试半天觉得没问题啊,可是一直提示超时。。。。。在网上查了查,才知道,mid=(low+high)/2导致溢出,所以呀,这句是关键!!!要改成mid=low+(high-low)/2. 还有一句在一般二分查找关键字时,改变low high值时都是low=mid+1
或者 high=mid+1.(因为已经比对过a[mid]!=key了,所以,a[mid]便不用再考虑。而本问题中要找第一个出问题的产品版本,即使a[mid]是出问题了,但是不能直接跳过,还要考虑前面的版本中是否还有出错的,故high=mid!!!)
First Bad Version
这道题一看就知道是要用二分查找,就迅速开始写了,写完了调试半天觉得没问题啊,可是一直提示超时。。。。。在网上查了查,才知道,mid=(low+high)/2导致溢出,所以呀,这句是关键!!!要改成mid=low+(high-low)/2. 还有一句在一般二分查找关键字时,改变low high值时都是low=mid+1
或者 high=mid+1.(因为已经比对过a[mid]!=key了,所以,a[mid]便不用再考虑。而本问题中要找第一个出问题的产品版本,即使a[mid]是出问题了,但是不能直接跳过,还要考虑前面的版本中是否还有出错的,故high=mid!!!)
First Bad Version
<span style="font-family:Times New Roman;font-size:18px;">/* 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 low=1,high=n,mid=0; while(low<high) { mid=low+(high-low)/2; if (isBadVersion(mid)) high=mid; else low=mid+1; } return low; } }</span>
相关文章推荐
- Java并发编程实践-总结
- 14行脚本配置Linux下一个Java环境变量
- HTML5里的input标签的required属性的提示
- 01-如何在Excel表的同一个单元格中换行?
- ps
- UIWebView 中 JS 与 Objective-C 通信
- RabbitMQ 入门 Helloworld
- asp.net mvc areas
- 11g RAC TAF 实现 Failover Connect 理解Time Connection Failover/Runtime Connection Failover
- JSTL基础知识
- UIScrollView代理方法执行顺序
- Mac OS X 跟新到10.11后cocoapods安装出现的问题(- bad response Not Found 404 (http://ruby.taobao.org/latest_spe)
- Android 中的 颜色 设置
- Redis内部数据结构实现解析
- 用GDB调试程序的设置 Segmentation fault(Core Dump)调试
- jqGrid 操作一些总结
- 通过srvctl add命令添加database信息到srvctl管理器-转
- [Cocoa]_[NSTableView]_[基本使用]
- initORA12C.ora 配置
- List操作之Select