博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
search for a range(找出一个数在数组中开始和结束位置)
阅读量:4595 次
发布时间:2019-06-09

本文共 1069 字,大约阅读时间需要 3 分钟。

Given an array of integers sorted in ascending order, find the starting and ending position of a given target value.

Your algorithm's runtime complexity must be in the order of O(log n).

If the target is not found in the array, return [-1, -1].

For example,

Given [5, 7, 7, 8, 8, 10] and target value 8,
return [3, 4].

 

这一题是从一个有序数组中找出一个数的开始位置和结束位置。这个题目跟求数组中一个数的个数一样(出现次数)。

平常的做法,直接遍历 ,复杂的是O(n),因为有序,用二分查找。复杂度为O(logn)。

像这种查找,因为有重复数字,可以分两步。

1,找出target,如果有多个,求出第一次出现的那个(有序以后)。

2,找出最后一次出现的那个。

如果求个数,则两者相减。。所以这两个步骤都要掌握。

见下面的标记。。一定记住

 

class Solution {    public int[] searchRange(int[] nums, int target) {        int[] result=new int[2];        if(nums==null||nums.length==0){            result[0]=-1;            result[1]=-1;            return result;        }                 int left=0;        int right=nums.length-1;        //查找最左边的位置        while(left
target) right=mid-1; else if(nums[mid]
target) right=mid-1; else if(nums[mid]

 

转载于:https://www.cnblogs.com/xiaolovewei/p/8136801.html

你可能感兴趣的文章
461. Hamming Distance
查看>>
Python垃圾回收机制详解
查看>>
{面试题1: 赋值运算符函数}
查看>>
Node中没搞明白require和import,你会被坑的很惨
查看>>
Python 标识符
查看>>
Python mysql 创建连接
查看>>
企业化的性能测试简述---如何设计性能测试方案
查看>>
centos7 安装中文编码
查看>>
POJ - 3683 Priest John's Busiest Day
查看>>
正则表达式start(),end(),group()方法
查看>>
vuejs 学习旅程一
查看>>
javascript Date
查看>>
linux常用命令2
查看>>
狼图腾
查看>>
13、对象与类
查看>>
Sublime Text3 个人使用心得
查看>>
jquery 编程的最佳实践
查看>>
MeetMe
查看>>
IP报文格式及各字段意义
查看>>
(转载)rabbitmq与springboot的安装与集成
查看>>