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. linux 服务发布脚本升级,远程发布,指定拉取远程dev,test等分支代码

    1.本地发布脚本 publish.sh #!/bin/sh currentDay=`date +%Y%m%d` currentTime=`date +%Y%m%d%H%M%S` tomcat1=/da ...

  2. springcloud Ribbon学习笔记一

    上篇已经介绍了如何开发eureka服务并让多个服务进行相互注册,接下来记录如何开发一个服务然后注册到eureka中并能通过ribbon成功被调用 开发一个用户服务并注册到eureka中,用户服务负责访 ...

  3. list的相关函数

    # ### 列表相关的函数 # (1) append ''' 功能:向列表的末尾添加新的元素 格式:列表.append(值) 返回值:None 注意:新添加的值在列表的末尾,该函数直接操作原有列表 ' ...

  4. 剑指Offer 53. 表示数值的字符串 (字符串)

    题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2","-123","3.1 ...

  5. Hbuilder护眼主题分享

    sublime还有webstorm有很多主题,但是Hbuilder就相对较少,或者直接说基本没什么主题,在网上搜索了很久也很少有Hbuilder的主题分享,于是就自己取色调了一个仿的护眼主题来分享一下 ...

  6. 单例模式demo

    package com.test; /** * * @author Administrator *我的发现:调用这个的时候,不能直接实例化了;需要=null;然后get; 这样安全些; *然后仔细找了 ...

  7. Vue: 用 key 管理可复用的元素

    <div id="login"> <template v-if="loginType === 'username'"> <labe ...

  8. 编写简单的windows桌面计算器程序

    编译环境:VS2017 主文件为: #include "stdafx.h" #include "WindowsProject5.h" #include &quo ...

  9. js中的Call()和apply()

    Call和apply,就是改变函数里面的this指向的方法. xxx.call()或xxx.apply() 特别强调下xxx必须是function,(普通函数,类,构造函数) var obj={ na ...

  10. Cache架构设计

    Cache策略 定时过期策略 定时过期的好处是Cache节点的个数符合实际需求,不会造成资源滥用和服务器压力 定时过期适合访问量较大,实时性要求不高的情况 如果访问量小,定时过期会造成Cache命中率 ...