34 Search for a Range(目标数的范围Medium)
2015-06-13 01:19
621 查看
题目意思:递增数组,找到目标数的范围,找不到则返回[-1,-1]
思路:折半查找
时间复杂度:O(logn)
运行时间:12ms
代码太冗余了,以后再精简吧
思路:折半查找
class Solution { public: vector<int> searchRange(vector<int>& nums, int target) { int start=0,end=nums.size()-1; vector<int> ans; while(start<=end){ int temp=(start+end)/2; if(nums[temp]>target){ end=temp-1; } else if(nums[temp]<target){ start=temp+1; } else if(nums[temp]==target){ int flag1=temp,flag2=temp; while(flag1>0&&nums[flag1-1]==target){ --flag1; } while(flag2<nums.size()-1&&nums[flag2+1]==target){ ++flag2; } ans.push_back(flag1); ans.push_back(flag2); return ans; } } ans.push_back(-1); ans.push_back(-1); return ans; } };
时间复杂度:O(logn)
运行时间:12ms
代码太冗余了,以后再精简吧
相关文章推荐
- 初识flask——数据库(2015.6.13)
- [葫芦娃的成长之路]数据结构的预备知识
- 定位未导出的函数地址(SHCreateProcess)
- java 为何会出现框架
- Learning Perl总结提升
- 边学习边实践才是硬道理=a=
- Win7/Vista Hook CreateProcess 的特别之处
- iTunes 备份损坏的解决办法
- 链表操作
- __stdcall的故事版解释
- Java学习之Iterator(迭代器)的一般用法 (转)
- PARENT VIEW INVALIDATE
- java 源码学习方法
- 轻松搞定面试中的二叉树题目
- POJ 2656 解题报告
- __stdcall与__cdecl的区别
- vs2012下编译ezrgb24所想
- Codeforces Round #248 (Div. 2) (ABCD题解)
- Ubuntu 教程 - 更改 Ubuntu 使用语言
- 操作系统 ---进程管理7