LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置【二分查找】
发布日期:2021-06-29 14:32:18
浏览次数:3
分类:技术文章
本文共 1070 字,大约阅读时间需要 3 分钟。
题目描述
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。
你的算法时间复杂度必须是 O(log n) 级别。
如果数组中不存在目标值,返回 [-1, -1]。
示例 1:
输入: nums = [5,7,7,8,8,10], target = 8
输出: [3,4] 示例 2:输入: nums = [5,7,7,8,8,10], target = 6
输出: [-1,-1]解题思路
可以看作是自己实现 C++ 里的 lower_bound 和 upper_bound 函数。
AC
class Solution { public: vector searchRange(vector & nums, int target) { if(nums.empty()) return vector { -1,-1}; int lower = lower_bound(nums,target); int upper = upper_bound(nums,target)-1; if(lower == nums.size() || nums[lower]!=target) return vector { -1,-1}; return vector { lower,upper}; } int lower_bound(vector &nums, int target){ int left=0,right=nums.size(),mid; while(left= target) right=mid; else left=mid+1; } return left; } int upper_bound(vector &nums, int target){ int left=0,right=nums.size(),mid; while(left target) right=mid; else left=mid+1; } return left; }};
转载地址:https://chocolate.blog.csdn.net/article/details/106208107 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月04日 04时27分00秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Linux下EasyPanel版本安装及升级
2019-04-29
raspberry pi(树莓派) + easycap d60 视频采集
2019-04-29
WebRTC
2019-04-29
rfc5766-turn-server NAT
2019-04-29
webrtc详细教程
2019-04-29
Android IOS WebRTC 音视频开发总结
2019-04-29
报表图表样式
2019-04-29
android模板图例
2019-04-29
树莓派网线直连
2019-04-29
复合材料培训(I第七期)
2019-04-29
复合材料生活中的应用
2019-04-29
ABAQUS复合材料(适合小白)
2019-04-29
ABAQUS高级案例解析
2019-04-29
人工智能药物研发
2019-04-29
【超级干货+福利】AIDD最全面的学习教程
2019-04-29
最新通知:AIDD与网络药理学资料大全
2019-04-29
Lammps分子动力学与第一性原理材料模拟及催化
2019-04-29
实习生小白的日常
2019-04-29
实习小白的日常(4)
2019-04-29