二分查找--查找重复有序数组中最左边的target

原创 2017年10月06日 16:08:10

二分查找是在面试中经常会遇到的面试题,根据普通的二分查找还衍生出了二分查找的其他情况,比如有序数组中的目标出现多次,利用二分查找返回在最左边出现的目标值或者是最右边出现的目标值。
查找最左边出现的目标值

public static int binarySearchLeft(int[] arr,int target){
        if(arr==null||arr.length==0){
            return -1;
        }
        int left = 0;
        int right = arr.length-1;
        while(left<right){
            int mid = (left+right)/2;
            if(arr[mid]<target){
                left = mid+1;
            }else {
                right = mid;
            }
        }
        if(arr[right]==target){
            return right;
        }
        return -1;
    }

查找最右边出现的目标值

public static int binarySearchRight(int[] arr,int target){
        if(arr==null||arr.length==0){
            return -1;
        }
        int left = 0;
        int right = arr.length-1;
        while(left<right){
            int mid = (left+right)/2;
            if(arr[mid]<=target){
                left = mid;
            }else {
                right = mid-1;
            }
        }
        if(arr[left]==target){
            return left;
        }
        return -1;
    }

END

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

程序员面试题目总结--数组(二)【二分查找、找出给定数字出现次数、两个有序整型数组交集、找出数组中唯一的重复元素、判断数组中的数值是否连续相邻】

6、分别用递归和非递归实现二分查找算法 分析:

二分查找进阶——循环有序数组查找再进阶——循环有序重复数组查找

就在昨天才刚刚写了一篇关于循环有序数组查找的函数:http://blog.csdn.net/qq_33724710/article/details/51200889 今天又发现了这道题的升级版,迫不...

【leetcode】搜索范围(二分查找升序数组target元素上下界)

34. Search for a Rangeleetcode题目描述题目描述:Given an array of integers sorted in ascending order, find t...

循环有序数组中的二分查找 Search in a rotated sorted array

二分查找是必须要掌握的技能。二分查找适用于有序的、顺序的存储结构。 1、可以用它来查找某一个数 2、可以用于查找某一个范围。如《二分查找有序数组中某个数的所在范围 Search for a Rang...

有序 循环数组的二分查找

例如 10,11,12,13,14,1,2,3,4,5,6,7,8,9虽然整体上不是有序的,但是只是在某个节点进行了循环。在这样的数组中进行查找,可以使用二分查找法。但是需要判断选环节的位置。 in...

在两个有序的数组中找第N个数,二分查找 O(lgm+lgn)级

 在两个有序的数组中找第N个数,O(lgm+lgn)级 分类: 算法2009-10-09 20:52 981人阅读 评论(3) 收藏 举报 问题描述: Give a...

有序数组和无序数组的二分查找

1. 有序数组的二分查找这种情况下,也是最经常的二分查找。 已知一个已经按递增(或递减)排好序的数组,想找到某个数值为k的元素。根据下标idx查找#include #include #inclu...

二分查找进阶——循环有序数组查找

(此题出自LeetCode) Search in Rotated Sorted Array Suppose a sorted array is rotated at some pivot unk...

有序(循环)数组查找元素-二分查找法

1.我们将一个有序数组(n个元素)从i(号位置)之前放到n位置之后形成的数组为有序循环数组。 2.数组 1 2 4 5 6 7 8    的有序循环数组有   1 2 4 5 6 7 8 (元数组是位...

查找:链表顺序查找和有序数组二分查找

符号表符号表是一种存储键值对的数据结构,支持两种操作:插入(put)和查找(get)。 可以分为无序符号表和有序符号表。本节的实现基于 每个键只对应着一个值,表不允许存在重复的键 向表中存...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二分查找--查找重复有序数组中最左边的target
举报原因:
原因补充:

(最多只允许输入30个字)