关注
在数组中找到一个局部最小的位置
【题目】
定义局部最小的概念。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;
}
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你实习是赚钱了还是亏钱了? #
6852次浏览 57人参与
# 找工作八股要背到什么程度? #
5252次浏览 89人参与
# 京东开奖 #
435018次浏览 2463人参与
# 秋招开始捡漏了吗 #
36927次浏览 257人参与
# 我在牛爱网找对象 #
203326次浏览 1412人参与
# 用一句话形容你的团队氛围 #
4310次浏览 55人参与
# 入职以后才知道的校招谎言 #
102458次浏览 647人参与
# 你找工作是从容有余 or 匆忙滚爬? #
3891次浏览 44人参与
# 上班后,才发现大学__白学了 #
6556次浏览 41人参与
# 同bg的你秋招战况如何? #
161584次浏览 935人参与
# 今年秋招还有金九银十吗 #
27017次浏览 242人参与
# 今年秋招是回暖还是遇冷 #
4483次浏览 33人参与
# 五一之后,实习真的很难找吗? #
90638次浏览 561人参与
# 规定下班时间vs实际下班时间 #
57513次浏览 332人参与
# 学历对求职的影响 #
553222次浏览 3924人参与
# 辞职后的日常 #
17138次浏览 84人参与
# 你喜欢工作还是上学 #
79773次浏览 865人参与
# 打工人的精神状态 #
104213次浏览 1321人参与
# Offer比较,求稳定还是求发展 #
65828次浏览 272人参与
# 分享一个让你热爱工作的瞬间 #
44930次浏览 395人参与
# 一人一个landing小技巧 #
129386次浏览 1467人参与
查看9道真题和解析