当前位置:网站首页>力扣刷题记录3-----34.在排序数组中查找元素的第一个和最后一个位置
力扣刷题记录3-----34.在排序数组中查找元素的第一个和最后一个位置
2022-07-20 02:12:00 【@白圭】
一、题目
二、代码
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
int size= nums.size();
//std::cout<<sz<<std::endl;
int left=0;
int right=size-1;
int middle=0;
vector<int> return_vector; //迭代器的使用,必须要先用push_back()或者={}初始化,才可以
return_vector={
-1,-1};
int fist_dst=-1; //起始位置
int last_dst=-1; //终止位置
int middle_dst=-1; //第一次找到的位置
while(left<=right)
{
if(left<=right-2) //二分可以分的情况
{
middle=(left+right)/2; //题目给出了升序排列
if(nums[middle]==target) //二分之后相等 返回索引值
{
middle_dst=middle;
break;
}
if(nums[middle]>target) //二分之后的数值比目标值大 中间的值一定不是 在左边
{
right=middle-1;
}
if(nums[middle]<target) //二分之后的数值比目标值小 中间的值一定不是 在邮编
{
left=middle+1;
}
}
else //二分不可分 两者相等或者相差1
{
if(nums[left]==target)
{
middle_dst=left;
break;
}
if(nums[right]==target)
{
middle_dst=right;
break;
}
if(nums[right]!=target&&nums[left]!=target) break;
}
}
//此时已经找到一个的坐标或者一个都没找到
int i;
std::cout<<"temp middle_dst" <<middle_dst<<std::endl;
if(middle_dst!=-1)
{
for(i=middle_dst;i>=1;i--) //寻找左边界
{
if(nums[i]==target&&nums[i-1]!=target)
{
fist_dst=i;
break;
}
if(nums[0]==target)
{
fist_dst=0;
break;
}
}
for(i=middle_dst;i<=size-2;i++) //寻找右边界
{
if(nums[i]==target&&nums[i+1]!=target)
{
last_dst=i;
break;
}
if(nums[size-1]==target)
{
last_dst=size-1;
break;
}
}
//只要能进入循环 必定能找到左右边界 下面考虑进入不到左右循环的情况
if(middle_dst==0) //左边界查找 查漏补缺
{
if(nums[0]==target) fist_dst=0;
}
if(middle_dst>size-2)
{
if(nums[size-1]==target) last_dst=size-1;
}
}
return_vector[0]=fist_dst;
return_vector[1]=last_dst;
return return_vector;
}
};
三、运行结果
边栏推荐
- 在vscode里面使用tinymce富文本编辑器
- 力扣刷题26. 删除有序数组中的重复项
- 网络安全——信息隐藏-使用隐写术来防止敏感数据被盗用
- Encapsulation, inheritance, polymorphism
- 百度飞桨EasyDL助力制造企业智能化转型
- 洛谷 P1678 烦恼的高考志愿
- Ppde Q2 welcome | welcome 22 AI developers to join the propeller developer technical expert program!
- Learn about spark project on nebulagraph
- 【Golang】golang实现发送微信服务号模板消息
- ICLR 2022 | GNNAsKernel: 能提升任意GNN表达能力的通用框架
猜你喜欢
随机推荐
Tutorial on principles and applications of database system (035) -- MySQL index (I): overview of index
HW2021攻防演练经历碎碎念-见解
2020年网络搭建与应用——国赛samba答案
数据库系统原理与应用教程(026)—— MySQL 修改表中数据(二):删(delete from)
acwing 871. 约数之和
网络安全—综合渗透测试-CVE-2010-2883-PDF漏洞分析
从表面上元宇宙和互联网的发展逻辑是相同的,但其实不然
acwing 872. 最大公约数
How can red star Macalline design cloud upgrade the traditional home furnishing industry in ten minutes to produce film and television level interior design effects
scala基础【高阶函数编程】
动态内存管理
Luogu p1873 [coci 2011/2012 5] Eko / tree cutting dichotomy
百度飞桨EasyDL助力制造企业智能化转型
LeetCode.302 场周赛___03_6121. 裁剪数字后查询第 K 小的数字____排序
PHP(1)
LeetCode.1252. 奇数值单元格的数目___简单模拟 / 行列数组+排列组合
LeetCode_ 90_ Subset II
Deit: attention can also be distilled
洛谷 P1678 烦恼的高考志愿
NC | 全球变化背景下溶解有机碳和微生物的生态网络关系研究取得进展