关于二分查找的相关问题
来源:互联网 发布:android 聚合数据 编辑:程序博客网 时间:2024/05/17 01:03
Search Insert Position
class Solution {public: int searchInsert(vector<int>& nums, int target) { int beg=-1,end=nums.size(); while(beg+1<end){ int mid=beg+(end-beg)/2; if(nums[mid]==target)return mid; else if(target>nums[mid])beg=mid; else end=mid; } return end; }};
查到目标点所在区间 in soreted array
class Solution {public: vector<int> searchRange(vector<int>& nums, int target) { vector<int>ret(2,-1); if(nums.empty())return ret; int beg=-1,end=nums.size(); while(beg+1<end){ int mid=beg+(end-beg)/2; if(nums[mid]<target)beg=mid; else end=mid; } if(end<nums.size()&&nums[end]==target)ret[0]=end; else return ret; end=nums.size(); while(beg+1<end){ int mid=beg+(end-beg)/2; if(target<nums[mid])end=mid; else beg=mid; } ret[1]=beg; return ret; }};
查找最小值(序列元素互异)in rotated sorted array
class Solution {public: int findMin(vector<int>& nums) { if(nums.empty())return -1; int beg=0,end=nums.size()-1; while(beg+1<end){ int mid=beg+(end-beg)/2; if(nums[mid]>nums[end])beg=mid; else end=mid; } return nums[beg]<nums[end]?nums[beg]:nums[end]; }};
查找最小值(存在相同值)in rotated sorted array
class Solution {public: int findMin(vector<int>& nums) { if(nums.empty())return -1; int beg=0,end=nums.size()-1; while(beg+1<end){ int mid=beg+(end-beg)/2; if(nums[mid]<nums[end]) end=mid; else if(nums[mid]>nums[end]) beg=mid; else --end; } return nums[beg]<nums[end]?nums[beg]:nums[end]; }};
Search in Rotated Sorted Array 元素互异
class Solution {public: int search(vector<int>& nums, int target) { if(nums.empty())return -1; int low=0,high=nums.size()-1; while(low+1<high){ int mid=low+(high-low)/2; if(target==nums[mid])return mid; if(nums[mid]>=nums[low]){ if(target>=nums[low] && target<nums[mid])high=mid; else low=mid; }else{ if(target>nums[mid]&&target<=nums[high])low=mid; else high=mid; } } if(nums[low]==target)return low; else if(target==nums[high])return high; else return -1; }};
Search in Rotated Sorted Array II 元素可能存在相同值
class Solution {public: bool search(vector<int>& nums, int target) { if(nums.empty())return false; int beg=0,end=nums.size()-1; while(beg+1<end){ int mid=beg+(end-beg)/2; if(target==nums[mid])return true; if(nums[mid]>nums[beg]){ if(target>=nums[beg]&&target<nums[mid])end=mid; else beg=mid; }else if(nums[mid]<nums[beg]){ if(target>nums[mid]&&target<=nums[end])beg=mid; else end=mid; }else{++beg;} } if(nums[beg]==target || nums[end]==target)return true; else return false; }};
阅读全文
0 0
- 关于二分查找的相关问题
- 关于二分查找的多个问题
- 关于二分查找法的一些问题
- 关于二分查找及其上下界问题的一些思考
- 关于二分查找的思想
- 关于二分查找的写法
- 二分查找引出的问题
- 二分查找的相关算法题
- stl中二分查找相关的函数
- 二分查找相关题目
- 关于二分查找的那些事
- 关于二分查找的应用拓展
- 关于二分查找的面试题归类
- 关于二分查找的深入讨论
- 关于二分查找的关键技巧
- php关于二分查找的算法
- 关于二分查找法的优化
- 关于二分查找算法
- 插入、更新与删除数据
- python3爬虫实战(一)爬取创业邦创投库
- Tomcat远程代码执行漏洞(CVE-2017-12615)
- redis
- 堆砖块
- 关于二分查找的相关问题
- JavaScript仿记事本的替换功能
- 校验登录用户名和密码
- 设计模式 C++实现
- 构造函数、析构函数是否要定义为虚函数?
- 转义字符的使用
- SSM整合,MySql数据库连接异常情况之JDBC属性文件的引用
- 嵌入式开发(ARM9)学习笔记(三)-红帽Linux定制与安装
- NAT模式下解决虚拟机ping不通主机,但主机可以ping通虚拟机