Lintcode:二分查找
来源:互联网 发布:标题优化工具 编辑:程序博客网 时间:2024/04/29 00:44
给定一个排序的整数数组(升序)和一个要查找的整数target
,用O(logn)
的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1
。
在数组 [1, 2, 3, 3, 4, 5, 10]
中二分查找3
,返回2
。
python:
class Solution: # @param nums: The integer array # @param target: Target number to find # @return the first position of target in nums, position start from 0 def binarySearch(self, nums, target): # write your code here low = 0 high = len(nums) - 1 while low <= high: middle = (high + low) // 2 if nums[middle] < target: low = middle + 1 elif nums[middle] > target: high = middle - 1 else: while nums[middle] == nums[middle - 1]: middle -= 1 return middle return -1
C++:
class Solution {public: /** * @param nums: The integer array. * @param target: Target number to find. * @return: The first position of target. Position starts from 0. */ int binarySearch(vector<int> &array, int target) { // write your code here if (array.size() == 1) { if (array[0] == target) return 0; } int start = 0; int end = array.size(); int middle = end / 2; while (array[middle] != target) { if (array[middle] > target) { end = middle - 1; } else { start = middle + 1; } middle = (start + end) / 2; if (array[middle] < target && array[middle + 1] > target) return -1; } while (array[middle] == array[middle - 1]) { middle--; } return middle; }};
阅读全文
0 0
- 二分查找-lintcode
- 二分查找-lintcode
- lintcode ----二分查找
- LintCode之二分查找
- lintcode:二分查找
- LintCode(easy)二分查找
- LintCode 14 二分查找
- LintCode : 二分查找
- LintCode-二分查找
- LintCode 二分查找
- lintcode:二分查找
- LintCode 二分查找
- lintcode 14. 二分查找
- Lintcode:二分查找
- Lintcode 14. 二分查找
- LintCode Binary Search 二分查找
- 二分查找——LintCode
- lintcode之经典二分查找
- Netty-Socketio API
- 开源框架使用指南
- 两个栈实现一个队列&两个队列实现一个栈
- 人工智能在线特征系统中的数据存取技术
- maven项目图标带红色感叹号(红灯、红点、红线)且保存时无法自动编译(无法生成class文件,提示Error: Could not find or load main class,或者代码改动后输出
- Lintcode:二分查找
- maven项目搭建过程
- Tomcat Server not starting with in 45 seconds
- 看了这么久JS,事件队列你真的懂吗?
- 归并排序(JAVA)
- SQL入门 13 建立复杂的数据库查询
- UE4引擎VR游戏研发
- 使用SSD基于caffe框架训练自己的数据
- CentOS基于Hadoop2.7安装hive2.1