Binary Search---First Position of Target
2016-04-03 18:05
351 查看
给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。
在数组 [1, 2, 3, 3, 4, 5, 10] 中二分查找3,返回2。
在数组 [1, 2, 3, 3, 4, 5, 10] 中二分查找3,返回2。
class Solution { /** * @param nums: The integer array. * @param target: Target to find. * @return: The first position of target. Position starts from 0. */ public int binarySearch(int[] nums, int target) { //write your code here if (nums==null||nums.length==0) { return -1; } int start = 0, end = nums.length-1; while(start+1<end){//防止无间隔 导致死循环 int mid = start + (end - start)/2; if (nums[mid] ==target) { end =mid; }else if (nums[mid]<target) { start = mid; }else { end = mid; } } if (nums[start] == target) { return start; } if (nums[end] == target) { return end; } return -1; } }
相关文章推荐
- Android实现一个自定义相机的界面
- 从头学习JAVA(五)
- C语言学习笔记 -冒泡排序
- s4:VB之如何更改排序的数字的数量
- CCF201503(1-3)3仅90分,求指点
- AVL树
- 调整磁盘分区(扩展系统盘)
- 求最大公约数的两种算法
- 嵌入式操作系统内存管理有哪几种,各有何特性
- Netty入门到精通二(火热更新中)
- java多态性理解
- Java数组扩容算法及Java对它的应用
- 杭电5652 India and China Origins
- OpenGL教程汇总
- hdoj Snooker 2060 (水)
- 十分钟搭建 Neural Style 服务
- 虚拟机设置
- 《浅谈HTTP协议》
- System.arraycopy用法
- Linux技术——makefile基础