Leetcode刷题 34.在排序数组中查找元素的第一个和最后一个位置
解法1:
class Solution {
public:vector<int> searchRange(vector<int>& nums, int target) {vector<int> temps;int i=0;//i记录位置int temp=0;//用来区分初始位置和结束位置for(auto m:nums)//遍历数组 {if(m!=target) //如果与目标数不相等{i++; //位置+1}else //如果相等{if(temp==0) //标志为0,第一次相等,记录起始位置{temps.push_back(i);temp=1; }if(temp==1) //标志为1,第二次相等,记录起始位置{temps.push_back(i);temp=2;} if(temp==2) //标志为2,第n次相等,删除第n-1次相等记录{temps.pop_back();temps.push_back(i);}i++;}}if(temp==0) //如果没有遇到相等的{temps.push_back(-1);temps.push_back(-1);}return temps;}
};
解法二(二分查找):
int lowBorder(vector<int> &nums, int target)
{int left=0; //左界赋值int right=nums.size()-1; //右界赋值while(left<=right){int mid=left+(right-left)/2; //寻找中间值if(nums[mid]>=target) //中间值大于目标值{right=mid-1; //重新对右界赋值}else{left=mid+1; //重新对左界赋值}}return left; //返回左值
}int highBorder(vector<int> &nums, int target) //查找结束位置{int left = 0; //左界为0int right = nums.size() - 1; //右界赋值while (left <= right){int mid = left + (right - left) / 2; //中间位置赋值if (nums[mid] > target) //如果中间位置大于目标值{right = mid - 1; //重新对右界赋值}else{left = mid + 1; //否则重新对左界赋值}}return right; //返回右界值}public:vector<int> searchRange(vector<int> &nums, int target){// 答案数组vector<int> ans;// 排除脏数据if (nums.size() == 0){// 初始化就是0return {-1, -1};}int low = lowBorder(nums, target);int high = highBorder(nums, target);if (low > high){return {-1, -1};}return {low, high};}
Leetcode刷题 34.在排序数组中查找元素的第一个和最后一个位置相关推荐
- C#LeetCode刷题之#34-在排序数组中查找元素的第一个和最后一个位置(Find First and Last Position of Element in Sorted Array)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4970 访问. 给定一个按照升序排列的整数数组 nums,和一个目 ...
- LeetCode中等题之在排序数组中查找元素的第一个和最后一个位置
题目 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 如果数组中不存在目标值 target,返回 [-1, -1]. 进阶: 你可以 ...
- 【LeetCode笔记】34. 在排序数组中查找元素的第一个和最后一个位置(Java、二分)
文章目录 题目描述 思路 & 代码 1. 暴力法 2. 二分法 3. 二分法--简略版 题目描述 老套路了,有序找元素,直接冲二分 思路是不难想,就是边界条件限制条件有点恶心,时不时爆个栈 思 ...
- 去掉数组最后一个元素_leetcode 34. 在排序数组中查找元素的第一个和最后一个位置每天刷一道leetcode算法系列!...
作者:reed,一个热爱技术的斜杠青年,程序员面试联合创始人 前文回顾: leetcode1. 两数之和--每天刷一道leetcode系列! leetcode2. 两数相加--每天刷一道leetcod ...
- LeetCode (二分小专题)33搜索旋转排序数组34在排序数组中查找元素的第一个和最后一个位置35搜索插入位置
前言 国庆前最后一次打卡,国庆后继续开启,公众号bigsai回复进群欢迎加入打卡,如有帮助记得点赞收藏. 近期打卡记录: LeetCode 32最长有效括号(困难) (本周) LeetCode 30串 ...
- [算法]LeetCode 专题 -- 二分查找专题 34. 在排序数组中查找元素的第一个和最后一个位置
LeetCode 专题 – 二分查找专题 34. 在排序数组中查找元素的第一个和最后一个位置 难度:中等 题目描述 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值 ...
- 34. 在排序数组中查找元素的第一个和最后一个位置
34. 在排序数组中查找元素的第一个和最后一个位置(两种方法记录) 法一(BP算法--使用双指针分别从前.后定位first index和last index),代码如下: class Solution ...
- 34. 在排序数组中查找元素的第一个和最后一个位置给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标
34. 在排序数组中查找元素的第一个和最后一个位置 难度中等2012 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target.请你找出给定目标值在数组中的开始位置和结束位置. 如果 ...
- 34. 在排序数组中查找元素的第一个和最后一个位置 golang
34. 在排序数组中查找元素的第一个和最后一个位置 https://leetcode-cn.com/problems/find-first-and-last-position-of-element-i ...
最新文章
- sublime快捷键
- Policy Injection Application Block
- chrome浏览器模拟手机 地理定位
- 奇异值分解讨论及其实现的计算步骤
- HTML+CSS+JavaScript复习笔记持更(九)——CSS3常用属性之盒模型
- 3步告别忙累压力大没成绩
- 网站架构相关PPT、文章整理
- 2018.9.15,Arduino—流水灯实验报告
- 参考文献中杂志名字问题
- #CSP 201709-1 打酱油
- 二进制安装的mysql怎么卸载_mysql安装-----二进制包安装及卸载
- bilibili怎么用用户名登录_b站(bilibili)账号只记得用户名忘了密码怎么办?实名认证能找回吗...
- source insight技巧
- 南方cass快捷键命令修改在哪_南方cass快捷键大全_南方cass快捷键命令大全_好特教程...
- 常用编码:Shift_JIS, GBK,EUCKR,Big5,UTF8,CP1252
- c语言x的n次方怎么写_C语言入门教程(三)进制与操作符
- 单片机软件延时的时间计算
- 淘宝产品详情页 上拉加载图片详情 效果实现
- 基于RFID技术在服装智慧门店中的应用-rfid服装盘点
- 区块链服务网络BSN与ConsenSys建立合作伙伴关系
热门文章
- CSS 实现 0.5px 边框线
- QtQuick 中的 qml 与 Qt 的 C++
- maven远程发布jar
- 本机Ajax异步通信
- android使用handler记录
- linux下导入mysql表乱码_在linux下导入.sql文件,数据库中文乱码
- wordpress漏洞_用软件工具扫描WordPress / Shopify主题恶意代码以及漏洞分析相关工具...
- python hbase_Python操作Hbase
- subsequence 1(牛客多校第五场记忆化搜索+组合数学)
- php如何进行错误处理,php如何自定义错误处理