博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
34. Find First and Last Position of Element in Sorted Array
阅读量:7156 次
发布时间:2019-06-29

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

一、题目

  1、审题

  2、分析

    求 target 在有序数组 nums 中出现的最小下标和最大下标组成的数组。否则返回 {-1, -1}。时间复杂度为 O(log n)。

 

二、解答

  1、思路:

    时间复杂度为 O(log n),想到用二分法。要求所在下标组合,则需在求得 target时在向前、向后查找 target,直至找到 target 出现的最大、最小下标。

class Solution {    public int[] searchRange(int[] nums, int target) {        int len = nums.length;        int[] result = new int[]{-1, -1};        int low = 0;        int high = len - 1;        if(len == 0)            return result;        if(target < nums[low] || target > nums[high])            return result;        while(low < high) {            int median = (low + high) / 2;            if(nums[median] > target)                high = median - 1;            else if(nums[median] < target)                low = median + 1;            else {                low = median;                high = median;                while(low - 1 >= 0 && nums[low - 1] == target) low--;                while(high + 1 < len && nums[high + 1] == target) high++;                break;            }        }                if(nums[low] == target) {            result[0] = low;            result[1] = high;            }                            return result;    }}

 

转载于:https://www.cnblogs.com/skillking/p/9440811.html

你可能感兴趣的文章
FZU.Software Engineering1816 · First Homework -Preparation
查看>>
python学习day-10 模块补充
查看>>
mysql连接慢,修改配置文件
查看>>
数轴染色
查看>>
LNMP环境源码搭建
查看>>
配置webpack.config.js中的文件
查看>>
linux下安装jdk
查看>>
统计学习方法 李航---第5章 决策树
查看>>
java中绘图-----那个鼠标等的监听我还是不太会,,好苦恼啊。不知道这些监听事件是怎么区分的...
查看>>
java从键盘输入若干数,求其最大值,最小值,平均值。等等
查看>>
volatile
查看>>
Ali流量控制中间件Sentinel
查看>>
微信小程序里多出来的奇怪宽度
查看>>
Java中的static关键字解析
查看>>
2个rman自动恢复的脚本
查看>>
香港药品 ref
查看>>
spring学习总结一----控制反转与依赖注入
查看>>
健康日志7-11
查看>>
模式匹配之尺度空间---scale space
查看>>
makefile编写---单个子目录编译自动变量模板ok
查看>>