LeetCode之Search for a Range
2015-08-02 11:41
323 查看
/*这道题本质上是考二分搜索。解题思路为: 1.先用二分搜索找到数组中需要查找数字的下标; 2.从给下标向左右扩展,获取它最左最右的下标并返回结果。*/ class Solution { public: vector<int> searchRange(vector<int>& nums, int target) { int left, right, idx; idx = binarySearch(nums, target); if(idx == -1){ left = -1; right = -1; } else{ int i = idx;; while(i >= 0 && nums[i] == target) --i; left = i+1; while(idx < nums.size() && nums[idx] == target) ++idx; right = idx-1; } vector<int> res; res.push_back(left); res.push_back(right); return res; } int binarySearch(const vector<int> &nums, int target){ int left(0), right(nums.size()-1); while(left <= right){ int mid = (left + right) / 2; if(nums[mid] == target) return mid; else if(nums[mid] < target) left = mid+1; else right = mid-1; } return -1; } };
相关文章推荐
- 第七课第五节,流程语句(版本5.0)
- MySQL日志表按月分区
- ubuntu生成快捷方式的简便方法
- hdu 5329 Question for the Leader 枚举,划分图为k个联通的子图
- mysql安装图解 mysql图文安装教程(详细说明)
- Java构造方法
- PHP读取 sql 文件并写入数据库
- springmvc 的数据回显
- 【POJ3260】【The Fewest Coins】
- 使用AccessibilityService实现微信自动抢红包
- C语言:十进制进制转换为其他进制(思想:查表法)
- 腾讯最赚钱的部门是怎么做运维的?
- Gym 100570E : Palindrome Query
- git 工具常用命令汇总
- Git本地基础操作
- The ASPM issues on Linux 3.2 kernel
- 进入最后的沟通阶段, 更需要一如既往地保持冷静的心态和真诚的态度, 继续负责地贡献自己的力量。
- delphi 控件大全
- phalcon——HTTP 请求
- HDU 5335 || Walk Out || 2015 Multi-University Training Contest 4 简单题