leetcode 每日一题 34. Search for a Range
来源:互联网 发布:分享文章赚钱系统源码 编辑:程序博客网 时间:2024/05/20 08:01
题目意思是,返回数组中某个数的起始位置。
由于这道题已被臭臭剧透过了,所以做起来只要按照思路写就可以了····
discuss里面看到很多大神用二分搜索之类,震惊!
class Solution {public: vector<int> searchRange(vector<int>& nums, int target) { int start=-1;int end=-1; for(int i=0;i<nums.size();++i){ if(nums[i]==target) { start=i; break; } //else start=-1; } for(int i=nums.size()-1;i>=0;--i){ if(nums[i]==target){ end=i; break; } //else end=-1; } return {start,end}; }};
还可以用二分法进行解答
对于有序的vector数列,找到target对应的begin和end位置,如果数列中不存在target,则返回[-1, -1]。
class Solution { public: vector<int> searchRange(vector<int>& nums, int target) { int left=0; int right=nums.size()-1; bool isFind=false; vector<int> ans; while(1){ int dis=right-left; //cout<<"dis= "<<dis<<endl; if(dis<=1){ if(nums[left]==target || nums[right]==target){ isFind=true; } break; } int mid=(right-left)/2; if(nums[left+mid]>target){ right=left+mid; }else if(nums[left+mid]<target){ left=left+mid; }else{ isFind=true; break; } } if(isFind){ for(int i=left; i<=right; i++){ if(nums[i]==target){ ans.push_back(i); break; } } for(int i=right; i>=left; i--){ if(nums[i]==target){ ans.push_back(i); break; } } }else{ ans.push_back(-1); ans.push_back(-1); } return ans; } };
0 0
- leetcode 每日一题 34. Search for a Range
- [LeetCode]34.Search for a Range
- LeetCode --- 34. Search for a Range
- LeetCode 34.Search for a Range
- [Leetcode] 34. Search for a Range
- [leetcode] 34.Search for a Range
- 【leetcode】34. Search for a Range
- [leetcode] 34. Search for a Range
- Leetcode 34. Search for a Range
- LeetCode 34. Search for a Range
- <LeetCode OJ> 34. Search for a Range
- 34. Search for a Range LeetCode
- [Leetcode]34.Search for a Range
- leetcode 34. Search for a Range
- leetcode 34. Search for a Range
- leetcode 34. Search for a Range
- leetcode 34. Search for a Range
- LeetCode *** 34. Search for a Range
- Ubuntu下cuda+mpi配置
- 目标检测之Haar特征
- android MediaPlayer理解_我的第一篇博客
- 探索推荐引擎内部的秘密,第 3 部分: 深入推荐引擎相关算法 - 聚类
- 高性能网站架构设计之缓存篇(1)- Redis的安装与使用
- leetcode 每日一题 34. Search for a Range
- Java之泛型进阶——泛型代码转化为普通代码
- 判断任意数据是否奇偶数
- java 线程2
- 创建单例的两种方式(懒汉式&GCD)
- Fragment切换
- c++上机报告1-1
- ORACLE优化方案
- 通过 git bash 配置和使用 github