博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Search for a Range
阅读量:6759 次
发布时间:2019-06-26

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

每日算法——leetcode系列


Search for a Range

Difficulty: Medium

Given a sorted array of integers, 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].

class Solution {public:    vector
searchRange(vector
& nums, int target) { }};

翻译

搜索(目标的)所在范围

难度系数:中等

给定一个有序整数数组,找出给定值在其中的起始与结束索引。

算法的时间复杂度必须为O(logn)。

如果数组中没有指定值,返回[-1, -1]。

例如,给定[5, 7, 7, 8, 8, 10],目标值为8,返回[3, 4]。

思路

对于有序数组, 查找可以用二分查找

由于有重复的值,如果二分法找到目标,则分两部分继续二分查找
如果没找到,返回[-1, -1]

代码

class Solution {public:    vector
searchRange(vector
& nums, int target) { int n = (int)nums.size(); int pos = binarySearch(nums, 0, n-1, target); vector
result; int low = -1, high = -1; if (pos >= 0){ low = pos; int l = low; while (l >= 0) { low = l; l = binarySearch(nums, 0, low - 1, target); } high = pos; int h = high; while (h >= 0){ high = h; h = binarySearch(nums, high + 1, n-1, target); } } result.push_back(low); result.push_back(high); return result; } private: int binarySearch(vector
nums, int low, int high, int target){ while (low <= high) { int mid = low + (high - low)/2; if (nums[mid] == target) { return mid; } if (target > nums[mid]) { low = mid + 1; } if (target < nums[mid]) { high = mid - 1; } } return -1; }};

转载地址:http://frbeo.baihongyu.com/

你可能感兴趣的文章
Django 中间件
查看>>
学城项目知识点整理及源码
查看>>
sqlServer,oracle中case关键字的用法
查看>>
表驱动法之保险费率
查看>>
娇俏2011年春装
查看>>
[转载] AUML——FIPA Modeling Technical Committee
查看>>
Samba Server Configuration - Simple
查看>>
【ZZ】大型数据库应用解决方案总结 | 菜鸟教程
查看>>
Apr. 2th
查看>>
栅格那点儿事(四D)
查看>>
反向代理服务器的工作原理(转)
查看>>
MVC前后台获取Action、Controller、ID名方法 以及 路由规则
查看>>
fnb2b分支拉取注意事项
查看>>
电脑上没有iis组件,怎么才能安装iis?
查看>>
项目总结01:JSP mysql SpringMvc下中国省市县三级联动下拉框
查看>>
迁移学习(训练数据少的可怜时的办法)
查看>>
Codeforces 798A - Mike and palindrome
查看>>
Chapter 6、字符串(二)(1st,Mar.)
查看>>
4-3 求链式表的表长 (10分)
查看>>
[BZOJ 1491][NOI2007]社交网络(Floyd)
查看>>