Leetcode_34. Search for a Range
来源:互联网 发布:php出生以来的时间戳 编辑:程序博客网 时间:2024/06/02 05:35
最近在做Leetcode的题,专题训练,每天做5道差不多,所以也在博客上记录一下题解吧。
今天做了几道二分查找的题,主要是二分查找的各种变形,都要掌握。
1.最原始的二分查找,返回key的下标,无则返回-1。
2.数组中有重复元素,返回第一个key的下标,无则返回-1。
3.数组中有重复元素,返回最后一个key的下标,无则返回-1。
4.返回刚好小于key的元素下标,无则返回-1。
5.返回刚好大于key的元素下标,无则返回-1。
在这道题中,输入为一个升序数组和一个key,要求返回该数组中key的范围下标,因此此题转化为求解 key第一次和最后一次出现的下标,可采用 2和3的方法。
代码如下所示:
注意 i<j 而不是i<=j
class Solution {public: vector<int> searchRange(vector<int>& nums, int target) { vector<int> ret(2,-1); if(nums.empty()) return ret; int i=0,j=nums.size()-1; while(i<j) { int m=(i+j)/2; if(nums[m]<target) i=m+1; else if(nums[m]>target) j=m-1; else j=m; } if(nums[i]!=target) return ret; else ret[0]=i; j=nums.size()-1; while(i<j) { int m=(i+j)/2+1; if(nums[m]>target) j=m-1; else if(nums[m]<target) i=m+1; else i=m; } ret[1]=j; return ret; }};
阅读全文
0 0
- LeetCode_34---Search for a Range
- Leetcode_34. Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range !!!
- Search for a Range
- Search for a Range
- Search For A Range
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range
- Linux笔记(4):Linux命令
- django起步
- 深入浅出之我见6
- 对于oracle数据库中CLOB数据类型的修改
- html模仿原生ios通讯录制作国家展示页(手机端)
- Leetcode_34. Search for a Range
- nginx 安装
- 动态规划题目
- EditText怎么控制可以输入0,但不能输入0开头的数字?
- 设计模式系列(一)单例模式
- NetBeans更换外观主题
- 国庆八天乐,码农长假怎么过?别加班了
- 09.node+express+mongo查询以及删除数据
- Tomcat简介