定义局部最小的概念。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中任意一个局部最小出现的位置即可。

分析:

如果arr[0]<arr[1],那么arr[0]是局部最小;--返回0

如果arr[N-1]<arr[N-2],那么arr[N-1]是局部最小;--返回1

如果arr[0]和arr[N-1]都不是,那么left = 1, right = N+2, mid =(left+right)/2

若arr[mid] < arr[mid+1]且 arr[mid]<arr[mid-1],则返回mid

否则必有arr[mid] < arr[mid+1]或arr[mid]<arr[mid-1],假设arr[mid] < arr[mid+1]

由于,arr[0]<arr[1], arr[mid] < arr[mid+1] 则可知,arr[1]到arr[mid]比存在一个局部最小,如此反复迭代。时间复杂度O(lgn),比遍历的O(n)要好。

http://www.nowcoder.com/profile/864393/test/231563/24592

class Solution
{public:int getLessIndex(vector<int> arr){  if(arr.size() == 0)return -1;if(arr.size() == 1)return 0;if(arr[0] < arr[1])return 0;int size = arr.size();if(arr[size - 1] < arr[size - 2])return size - 1;int low = 1;int high = size - 2;int mid;while(low < high){  mid = (low + high)/2;if(arr[mid] > arr[mid+1]){  low = mid+1;}  else if(arr[mid] > arr[mid-1]){  high = mid-1;}  elsereturn mid;}return low;}
};

转载于:https://www.cnblogs.com/diegodu/p/4589781.html

[nowCoder] 局部最小值位置相关推荐

  1. 牛客网 在线编程 局部最小值位置

    链接:https://www.nowcoder.com/questionTerminal/322eb1da892448f4b18d9b21a6d48c99 来源:牛客网 定义局部最小的概念.arr长度 ...

  2. Java算法 -- 二分查找:查找目标元素最左的位置和最右的位置、局部最小值问题求解

    1. 二分查找 二分查找也是一种在数组中查找数据的算法.它只能查找已经排好序的数据.二分查找通过比较数组中间的数据与目标数据的大小,可以得知目标数据是在数组的左边还是右边.因此,比较一次就可以把查找范 ...

  3. (一)神经网络训练不起来怎么办:局部最小值(local minia)与鞍点(saddle point)

    Optimization的时候,怎么把gradient descent做的更好? 1.局部最小值(Local minima)与鞍点(saddle point) 所谓的saddle point其实就是g ...

  4. [深度学习大讲堂]文化、进化与局部最小值

    本文为微信公众号[深度学习大讲堂]特约稿,转载请注明出处 Reference:Culture vs Local Minima [Bengio.2012] 关于作者 首次看到Bengio教授这篇论文是在 ...

  5. 关于过拟合、局部最小值、以及Poor Generalization的思考

    Poor Generalization 这可能是实际中遇到的最多问题. 比如FC网络为什么效果比CNN差那么多啊,是不是陷入局部最小值啊?是不是过拟合啊?是不是欠拟合啊? 在操场跑步的时候,又从SVM ...

  6. (java)输入一个正整数n(1≤n≤6)和n阶方阵A,交换方阵A中的最大值与最小值位置。假定方阵A中的最大值与最小值都唯一。

    package com.qinyang.array;import java.util.Scanner;public class Demo02 {/*输入一个正整数n(1≤n≤6)和n阶方阵A,交换方阵 ...

  7. 模拟退火算法是怎么跳出局部最小值

    模拟退火算法确保求出的是全局最优值,不会陷入局部最小值 模拟退火算法新解的产生相当于一个找"邻居"的过程,目标函数很容易陷入局部最小值,但是通过以一定概率接受比当前解更差的新解使得 ...

  8. 用c语言输出数组中最小值,C语言.由键盘输入10个整数存入数组,输出最大值、最小值及它们的位置信息.并将最大、最小值位置互换后,再...

    共回答了18个问题采纳率:88.9% /* 输入10个整数(空格隔开) :45 67 71 23 19 87 62 33 91 24 67 71 23 19 87 62 33 91 24 最大值是 : ...

  9. 20220215 人工势场的缺陷局部最小值

最新文章

  1. C# string.Empty
  2. Flutter中通过循环渲染组件
  3. 论文翻译-机器翻译:Attention
  4. 【Shell】fix 1032报错信息的脚本
  5. nginx 日志配置log_format用法
  6. 《Linux内核设计与实现》读书笔记(三)- Linux的进程
  7. Dubbo的Provider配置
  8. wps怎么投递简历发到boss直聘_央视新闻联合BOSS直聘带“岗”年薪超82亿元
  9. python实现监控电脑打开网页_Python轻松实现动态网页爬虫(附详细源码)
  10. TCP协议之如何保证传输的可靠性
  11. winform 与WPF
  12. 将select中的项从一个移动到另一个select中
  13. “约见”面试官系列之常见面试题之第一百零一篇之vue-router传参(建议收藏)
  14. linux 检测mysql链接_MySQL笔记
  15. 状态管理 - 全局状态管理工具
  16. raspberry pi_您应该为项目选择哪种Raspberry Pi?
  17. JAVA编程规则【转自java编程思想】
  18. WebService—规范介绍和几种实现WebService的框架介绍
  19. matlab中x.^2与x^2有什么区别?
  20. 二进制和十进制的相互转换

热门文章

  1. 悲催的跨平台文献管理能力
  2. 2021-2027年中国手机天线行业竞争格局分析及发展趋势预测报告
  3. Chrome不支持showModalDialog的解决方案
  4. 2022-2028年中国女式西装行业研究及前瞻分析报告
  5. 不要抱怨,勇敢向前走,你就能拥有更好的自己
  6. 【转载】写博意味着什么?
  7. dbeaver数据库工具
  8. 理解 Word2Vec 之 Skip-Gram 模型
  9. SpringBoot-web开发(一): 静态资源的导入(源码分析)
  10. 稀疏性如何为AI推理增加难度