
关注
在数组中找到一个局部最小的位置
【题目】
定义局部最小的概念。arr长度为1时,arr[0]是局部最小。arr的长度为N(N>1)时,如果arr[0]<arr[1],那么arr[0]是局部最小;如果arr[N-1]<arr[N-2],那么arr[N-1]是局部最小;如果0<i<N-1,既有arr[i]<arr[i-1]又有arr[i]<arr[i+1],那么arr[i]是局部最小。
给定无序数组arr,已知arr中任意两个相邻的数都不相等,写一个函数,只需返回arr中任意一个局部最小出现的位置即可。
public int getLessIndex(int[] arr) {
if (arr == null || arr.length == 0) {
return -1; // no exist
}
if (arr.length == 1 || arr[0] < arr[1]) {
return 0;
}
if (arr[arr.length - 1] < arr[arr.length - 2]) {
return arr.length - 1;
}
int left = 1;
int right = arr.length - 2;
int mid = 0;
while (left < right) {
mid = (left + right) / 2;
if (arr[mid] > arr[mid - 1]) {
right = mid - 1;
} else if (arr[mid] > arr[mid + 1]) {
left = mid + 1;
} else {
return mid;
}
}
return left;
}
查看原帖
点赞 3
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 面试问题记录 #
35058次浏览 535人参与
# 工作一周年分享 #
15931次浏览 104人参与
# 京东TGT #
37056次浏览 158人参与
# 入职第五天,你被拉进了几个工作群 #
14941次浏览 79人参与
# 面试经验谈 #
23222次浏览 349人参与
# 假如我穿越到了妈妈的18岁 #
2529次浏览 32人参与
# 机械人,你的第一份感谢信是谁给的 #
23992次浏览 295人参与
# 面试吐槽bot #
6527次浏览 55人参与
# 零跑求职进展汇总 #
2704次浏览 16人参与
# 视觉/交互/设计招聘信息汇总 #
11430次浏览 596人参与
# 职场捅娄子大赛 #
266976次浏览 2387人参与
# 上班苦还是上学苦呢? #
215544次浏览 1288人参与
# 职场新人生存指南 #
340063次浏览 7275人参与
# 国企vs私企,你更想去? #
213853次浏览 2037人参与
# 异地恋该为对方跳槽吗 #
28536次浏览 143人参与
# 硬件人秋招的第一个offer #
67632次浏览 1083人参与
# 请用你的专业向妈妈表白 #
5404次浏览 56人参与
# 硬件人更看重稳定还是高薪 #
43066次浏览 216人参与
# 机械求职避坑tips #
43048次浏览 356人参与
# 对妈妈没说出口的话 #
15850次浏览 364人参与
# 妈妈治愈了你哪些脆皮时刻 #
7270次浏览 119人参与