leetcode 34. Search for a Range
来源:互联网 发布:wpf 实时显示数据 编辑:程序博客网 时间:2024/06/09 11:15
题目描述
找到一个升序序列中某个数在哪个范围内,没有的话返回【-1,-1】
Given an array of integers sorted in ascending order, 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].
代码实现
使用二分法找到目标数字的位置A,然后往A的前面和后面走找到边界。
class Solution {public: vector<int> searchRange(vector<int>& nums, int target) { int nums_len = nums.size(); int lo = 0, hi = nums_len - 1; vector<int> result; int mid = 0; if(nums_len < 1) { result.push_back(-1); result.push_back(-1); return result; } while(lo <= hi) { mid = (lo + hi) >> 1; if(nums[mid] > target) hi = mid - 1; else if(nums[mid] < target) lo = mid + 1; else break; } int tmp = mid; int left = -1, right = -1; while(mid >= 0 && nums[mid] == target) { left = mid; mid--; } while(tmp < nums_len && nums[tmp] == target) { right = tmp; tmp++; } result.push_back(left); result.push_back(right); return result; }};
0 0
- [LeetCode]34.Search for a Range
- LeetCode --- 34. Search for a Range
- LeetCode 34.Search for a Range
- [Leetcode] 34. Search for a Range
- [leetcode] 34.Search for a Range
- 【leetcode】34. Search for a Range
- [leetcode] 34. Search for a Range
- Leetcode 34. Search for a Range
- LeetCode 34. Search for a Range
- <LeetCode OJ> 34. Search for a Range
- 34. Search for a Range LeetCode
- [Leetcode]34.Search for a Range
- leetcode 34. Search for a Range
- leetcode 34. Search for a Range
- leetcode 34. Search for a Range
- leetcode 34. Search for a Range
- LeetCode *** 34. Search for a Range
- LeetCode 34. Search for a Range
- 关于单边账的解释及解决(收单行业)
- BZOJ 2460 [BeiJing2011] 元素
- 让EFCore更疯狂些的扩展类库(二):查询缓存、分部sql、表名替换、遍历的策略配置
- 服务器分区及挂载
- Proxy SwitchySharp或Proxy SwitchyOmega配置方法学习
- leetcode 34. Search for a Range
- 微信小程序开发之『侧边栏滑动』特效
- 正则表达式-积累的开始-条件判断
- 涉众
- 【LeetCode】175. Combine Two Tables
- adb 常用命令
- 欢迎使用CSDN-markdown编辑器
- jquery之缓存
- 多线程执行超时处理