lintcode 447 Search in a Big Sorted Array(倍增+二分)
2024-08-24 02:33:02
题意:给一个按照升序排序的正整数数组。这个数组很大以至于只能通过固定的接口ArrayReader->get(k)来访问第k个数。并且也没有办法得知这个数组有多大。找到给出的整数target第一次出现的位置。你的算法需要在O(logk)的时间复杂度内完成,k为target第一次出现的位置的下标。如果找不到target,返回-1。
思路:倍增找到第一个大于target的位置,然后二分
class Solve
{
int searchBigSortedArray(ArrayReader* reader,int target)
{
int index = ;
while(reader->get(index-)<target)
index*=;
int start=,end=index;
while(start<=end)
{
int mid = start+(end-start)/;
if(reader->get(mid)==target)
return mid;
else if(reader->get(mid)>target)
end = mid-;
else start = mid+;
}
return -;
}
};
最新文章
- wpf 客户端 添加qq客服咨询
- iScroll-5 API 中文版
- JavaScript 正则表达式上——基本语法
- Apache Shiro 简介
- sudo简单命令语法及配置
- cpu,内存,虚拟内存,硬盘,缓存之间是什么关系??
- Unity小厨房之-----背后视角摄像机
- Centos6.4 mysql安装与配置
- FTP服务器搭建及操作(一)
- 团队作业2——需求分析&;原型设计
- Spring Security 入门(1-1)Spring Security是什么?
- android 屏幕适配,hdpi,xhdpi,xxhdpi理解,常见出图
- ubuntu10.04 安装oracle server 版 笔记
- 椭圆曲线密码学ECC
- python--json、jsonpath
- Linux下C语言的文件操作
- 一道面试题 包含了new的细节 和运算符的优先级 还有属性访问机制
- std::async
- windows 本地搭建 apache+mysql+php环境详细讲解
- Android应用开发基础之一:数据存储和界面展现(一)
热门文章
- nginx(一)初识nginx
- 关于申请GMS认证来使用谷歌的一些服务应用及闭源API
- Red Hat Enterprise Linux AS4, C++ OCCI connect Oracle 9i
- Transaction check error: file /etc/rpm/macros.ghc-srpm from install of redhat-rpm-config-9.1.0-80.el7.centos.noarch conflicts with file from package epel-release-6-8.noarch Error Summary ----------
- 如何确定Kafka的分区数、key和consumer线程数
- vue实战记录(二)- vue实现购物车功能之创建vue实例
- java远程文件操作
- 3537. 【NOIP2013提高组day2】华容道(搜索 + 剪枝)
- 四大解析器(BeautifulSoup、PyQuery、lxml、正则)性能比较
- PowerDesigner生成pdm(适用Mysql)