首页 > 编程语言 > 详细

在数组中找到一个局部最小位置

时间:2020-02-24 00:53:20      阅读:78      评论:0      收藏:0      [点我收藏+]

题目

技术分享图片

分析

数组里面一定有两个以上元素,而且任意两个相邻数不相等
两头:
一个位置比后一个位置数小,称之为局部最小
一个位置比前一个位置数小,称之为局部最小
中间:
一个位置必须比前一个位置小,也要比后一个位置小,称之为局部最小

形象点理解
两头递增、递减,中间下凹

题目要求只返回一个局部最小的位置就可以了

技术分享图片

先看0位置和n-1,有任何一个是直接返回
如果首尾都不是,那中间必然有,为什么呢?因为两头都是往中间递减的,从图像上来看,中间必有局部最小位置

然后此使看mid位置满不满足,满足直接返回,不满足

看两边趋势,如果有向两边的中间递减的趋势,则把范围缩小到那一半;如果两边都有则随便取一边就可以了,说明两边都有满足条件的解

这也是二分查找的思想,变体二分查找

实现

在数组中找到一个局部最小位置

原文:https://www.cnblogs.com/kristse/p/getMin.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!