class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target)
{
vector<int> r(, -);
if (!nums.size())
{
return r;//为空时,返回[-1,-1]
}
int l = , h = nums.size() - , m = ;
if (target < nums[l] || nums[h] < target)
{
return r; //小于最小或大于最大返回[-1,-1]
}
while (l <= h)
{
m = (l + h) / ;
if (nums[m] == target)
{
//命中m时
int i = m;
while (nums[i] == target&&i < nums.size())
{
i++;//寻找nums中与target相等值的右界
}
r[] = i - ;
while (nums[m] == target&&m >= )
{
m--;//寻找nums中与target相等值的左界
}
r[] = m + ;
return r;
}
else if (nums[m] < target)
{
l = m + ;
}
else
{
h = m - ;
}
}
return r;//没找到target,返回[-1,-1]
}
};

补充一个python的实现:

 class Solution:
def searchRange(self, nums: 'List[int]', target: 'int') -> 'List[int]':
n = len(nums)
i =
j = n -
if i == j:
if nums[i] == target:
return [,]
else:
return [-,-]
begin =
end = n -
while i < j:
if nums[i] == target:
begin = i
end = i
while end < n and nums[end] == target:
end +=
return [begin,end-]
if nums[j] == target:
end = j
begin = j
while begin >= and nums[begin] == target:
begin -=
return [begin+,end]
mid = i + (j - i) //
if nums[mid] == target:
begin = mid
while begin >= and nums[begin] == target:
begin -=
end = mid
while end < n and nums[end] == target:
end +=
return [begin+,end-]
elif nums[mid] < target:
i = mid +
else:
j = mid -
return [-,-]

leetcode34的更多相关文章

  1. LeetCode34 Search for a Range

    题目: Given a sorted array of integers, find the starting and ending position of a given target value. ...

  2. [Swift]LeetCode34. 在排序数组中查找元素的第一个和最后一个位置 | Find First and Last Position of Element in Sorted Array

    Given an array of integers nums sorted in ascending order, find the starting and ending position of ...

  3. leetcode34. Find First and Last Position of Element in Sorted Array

    二分查找不只是查找,还可以根据需求添加条件进行查找,比如这个题,左端点的条件就是边界点或者小于target,右端点的条件就是!=size()或者大于.根据这个找到查找的条件

  4. LeetCode34.在排序数组中查找元素的第一个和最后一个位置 JavaScript

    给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 你的算法时间复杂度必须是 O(log n) 级别. 如果数组中不存在目标值,返回 [ ...

  5. leetcode34. 在排序数组中查找元素的第一个和最后一个位置

    给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 你的算法时间复杂度必须是 O(log n) 级别. 如果数组中不存在目标值,返回 [ ...

  6. Leetcode34.Find First and Last Position of Element in Sorted Array在排序数组中查找元素的位置

    给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 你的算法时间复杂度必须是 O(log n) 级别. 如果数组中不存在目标值,返回 [ ...

  7. 【Java实现】剑指offer53.1——在排序数组中查找数字(LeetCode34:在排序数组中查找元素的起始位置)

    序数组中查找元素的起始位置):思路分享 <剑指offer>题目和LeetCode主站本质是一样的,想要找到target数目,也需要找到左右边界 题目解析: 在一个排序数组中,找到targe ...

  8. 二分查找 && 三分查找

    LeetCode34. Find First and Last Position of Element in Sorted Array 题意:找出指定元素出现的范围,Ologn 思路:两次二分 cla ...

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

    Given a sorted array of integers, find the starting and ending position of a given target value. You ...

随机推荐

  1. kvm恢复和删除快照

    使用文件快照的方式实现文件备份,但单说快照(snapshot)的话,他是某一时间点(版本)你能看到的该时间点备份文件状态的全貌,通过文件的快照(全貌)你能恢复到特定时间点(版本)的文件状态. 创建虚拟 ...

  2. Linux:挂载、卸载光盘

    挂载.卸载光盘 前提准备: 已经安装好虚拟机 安装好的虚拟机与镜像系统最好一致 前提配置 1.选择虚拟机 2.选择设置 3.选择CD/DVD 4.选择ISO镜像文件,选择设备状态,都勾选 5.ps如果 ...

  3. wc语法

    统计当前目录下的所有文件行数: wc -l * 当前目录以及子目录的所有文件行数: find  . * | xargs wc -l 可以把*改成所要匹配的文件,例如Java文件,*.java这样就只统 ...

  4. 入门项目 A4 db_handler 数据操作文件

    ''' 数据处理层 ''' from conf import settings # 以下代码中有提前定义的路径函数,需要导入配置文件包下面的设置模块 import json # 以下代码中有需要序列化 ...

  5. 莫烦tensorflow(5)-训练二次函数模型并用matplotlib可视化

    import tensorflow as tfimport numpy as npimport matplotlib.pyplot as plt def add_layer(inputs,in_siz ...

  6. 04_安装Nginx图片服务器

    一.安装Nginx 先安装Nginx,看我之前发的文章: 搭建Nginx服务器 二.安装vsftpd 再安装vsftpd组件,看我之前发的文章: Linux安装ftp组件 三.开始搭建Nginx图片服 ...

  7. JAVA高级篇(一、JVM基本概念)

    一.什么是JVM VM的中文名称叫Java虚拟机,它是由软件技术模拟出计算机运行的一个虚拟的计算机. JVM也充当着一个翻译官的角色,我们编写出的Java程序,是不能够被操作系统所直接识别的,这时候J ...

  8. 本地Debug Asp.net MVC 无法加载css与js

    运行一个从网上download的一个MVC项目,运行的时候无法显示样式,js也报错. 检查路径也没有问题,后来在配置中把其中的一段配置去掉 <staticContent> <!-- ...

  9. Linux 测试常用命令

    ls :列出文件 ls -l ls -t  按时间排序 ls -rt 按时间倒序 ls -a  列出所有文件(包括隐藏的) ll : ll = ‘ls -l ’ cd: 进入文件目录 cd 不带目录名 ...

  10. 安装ucenter以及单点实现

    1.下载ucenter包 最好是utf-8格式2.解压得到4个安装包 3.1)新建一个站点c 把upload中的所有文件复制到站点根目录下中2)访问出现 Please click here to in ...