leetcode34
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的更多相关文章
- LeetCode34 Search for a Range
题目: Given a sorted array of integers, find the starting and ending position of a given target value. ...
- [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 ...
- leetcode34. Find First and Last Position of Element in Sorted Array
二分查找不只是查找,还可以根据需求添加条件进行查找,比如这个题,左端点的条件就是边界点或者小于target,右端点的条件就是!=size()或者大于.根据这个找到查找的条件
- LeetCode34.在排序数组中查找元素的第一个和最后一个位置 JavaScript
给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 你的算法时间复杂度必须是 O(log n) 级别. 如果数组中不存在目标值,返回 [ ...
- leetcode34. 在排序数组中查找元素的第一个和最后一个位置
给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 你的算法时间复杂度必须是 O(log n) 级别. 如果数组中不存在目标值,返回 [ ...
- Leetcode34.Find First and Last Position of Element in Sorted Array在排序数组中查找元素的位置
给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 你的算法时间复杂度必须是 O(log n) 级别. 如果数组中不存在目标值,返回 [ ...
- 【Java实现】剑指offer53.1——在排序数组中查找数字(LeetCode34:在排序数组中查找元素的起始位置)
序数组中查找元素的起始位置):思路分享 <剑指offer>题目和LeetCode主站本质是一样的,想要找到target数目,也需要找到左右边界 题目解析: 在一个排序数组中,找到targe ...
- 二分查找 && 三分查找
LeetCode34. Find First and Last Position of Element in Sorted Array 题意:找出指定元素出现的范围,Ologn 思路:两次二分 cla ...
- 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 ...
随机推荐
- Python基础06_list
尽量多挤点时间用来学点知识吧. list是不同于字符串的,字符串定义后不可修改,而list是可以修改的. 以下是学习笔记: #!/usr/bin/env python # coding:utf-8 l ...
- Vxlan基础理解
一 . 为什么需要Vxlan 1. vlan的数量限制 4096个vlan远不能满足大规模云计算数据中心的需求 2. 物理网络基础设施的限制 基于IP子网的区域划分限制了需要二层网 ...
- http/ftp等的URL匹配正则表达式 ZT
网上流传着多种匹配URL的正则表达式版本,但我经过试验,最好用的还是从stackoverflow上查到的: (https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_| ...
- python day19--面向对象,接口,封装
#1.接口类,对象类.规范类中方法的统一. # 第一版:三个类,每个类中有相同的方法 # class Alipay: # def __init__(self,money): # self.money= ...
- [转] C++ 和 python之间的互相调用
转载自:https://www.cnblogs.com/apexchu/p/5015961.html 一.Python调用C/C++ 1.Python调用C动态链接库 Python调用C库比较简单,不 ...
- 使用selenium爬取网站动态数据
处理页面动态加载的爬取 selenium selenium是python的一个第三方库,可以实现让浏览器完成自动化的操作,比如说点击按钮拖动滚轮等 环境搭建: 安装:pip install selen ...
- 转发 C# Win32 API程序控制鼠标的操作
命名空间:using System.Runtime.InteropServices; 在程序中添加: [DllImport("User32")]public extern stat ...
- jsonify
在flask中通过响应,将json数据显示在网页中,并且将Content-Type该为application/json格式 1,第一种方法: from flask import jsonify @ap ...
- SQLI DUMB SERIES-7
(1)查看PHP源代码 可以看见输入的id被一对单引号和两对圆括号包围 (2)根据提示:Dump into Outfile可知,此次攻击需要导出文件 (3)在第一关获取 @@datadir 读取数据库 ...
- JavaScript 基础篇1
JavaScript引用问题 1:<script>标签引用嵌入html页面中,在外部引用中是JavaScript文件时必须用src属性设置相应的文件的URL.2:在不使用defer和asy ...