最左原位
来源:互联网 发布:java注解是什么 编辑:程序博客网 时间:2024/04/30 18:54
有一个有序数组arr,其中不含有重复元素,请找到满足arr[i]==i条件的最左的位置。如果所有位置上的数都不满足条件,返回-1。
给定有序数组arr及它的大小n,请返回所求值。
测试样例:
[-1,0,2,3],4
返回:2
首先判断边界条件,如果arr[0]大于n-1,或者arr[n-1]小于0直接返回-1;否则判断中间值,如果arr[m]>m,则查找左半部分,相等和arr[m]小于m查找右半部分,相等之后记录下位置后继续查找左半部分.
注意本题目一个关键因素是不含有重复元素.
class Find {public: int findPos(vector<int> arr, int n) { if(n<=0) return -1; if(arr[0]>n-1) return -1; if(arr[n-1]<0) return -1; int low=0; int high=n-1; int mid=low+(high-low)/2; int res=-1; while(low<high) { if(arr[mid]==mid) { res=mid; high=mid-1; } else if(arr[mid]>mid) high=mid-1; else low=mid+1; mid=low+(high-low)/2; } if(arr[mid]==mid) return mid; return res; }};
0 0
- 最左原位
- 最左原位
- 最左原位
- 最左原位、完全二叉树计数、快速N次方
- 最左前缀原则
- 元素最左出现
- 左侧线 延伸到最左边
- MySql最左前缀原则
- 元素最左出现练习
- 二分搜索最左位置
- MySql最左前缀原则
- MySql最左前缀原则
- 最左前缀 联合索引
- 最左推导与最右推导
- [牛客网-左老师]最短排序
- SQL 索引最左前缀原理
- mysql索引的最左前缀原则
- mysql组合索引最左前缀
- Thinkpad T460P I7 6820HQ版本运算以及显卡能力简单测试
- HTTPS工作原理和TCP握手机制
- GCD常用函数
- 背包问题详解
- xcode archive 一直是灰色的
- 最左原位
- 算法1
- Python语句(迭代及应用)
- activiti工作流
- Java8 default方法
- 63.内容提供者ContentProvider--系统内容提供者(获取短信)
- 读取Assets中的文件并写入数据库然后读出
- mxnet实战笔记(1) - 使用自己的图片数据训练CNN模型
- 读QT5.7源码(七)QMetaObjectPrivate