[nowCoder] 局部最小值位置
定义局部最小的概念。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] 局部最小值位置相关推荐
- 牛客网 在线编程 局部最小值位置
链接:https://www.nowcoder.com/questionTerminal/322eb1da892448f4b18d9b21a6d48c99 来源:牛客网 定义局部最小的概念.arr长度 ...
- Java算法 -- 二分查找:查找目标元素最左的位置和最右的位置、局部最小值问题求解
1. 二分查找 二分查找也是一种在数组中查找数据的算法.它只能查找已经排好序的数据.二分查找通过比较数组中间的数据与目标数据的大小,可以得知目标数据是在数组的左边还是右边.因此,比较一次就可以把查找范 ...
- (一)神经网络训练不起来怎么办:局部最小值(local minia)与鞍点(saddle point)
Optimization的时候,怎么把gradient descent做的更好? 1.局部最小值(Local minima)与鞍点(saddle point) 所谓的saddle point其实就是g ...
- [深度学习大讲堂]文化、进化与局部最小值
本文为微信公众号[深度学习大讲堂]特约稿,转载请注明出处 Reference:Culture vs Local Minima [Bengio.2012] 关于作者 首次看到Bengio教授这篇论文是在 ...
- 关于过拟合、局部最小值、以及Poor Generalization的思考
Poor Generalization 这可能是实际中遇到的最多问题. 比如FC网络为什么效果比CNN差那么多啊,是不是陷入局部最小值啊?是不是过拟合啊?是不是欠拟合啊? 在操场跑步的时候,又从SVM ...
- (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,交换方阵 ...
- 模拟退火算法是怎么跳出局部最小值
模拟退火算法确保求出的是全局最优值,不会陷入局部最小值 模拟退火算法新解的产生相当于一个找"邻居"的过程,目标函数很容易陷入局部最小值,但是通过以一定概率接受比当前解更差的新解使得 ...
- 用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 最大值是 : ...
- 20220215 人工势场的缺陷局部最小值
最新文章
- C# string.Empty
- Flutter中通过循环渲染组件
- 论文翻译-机器翻译:Attention
- 【Shell】fix 1032报错信息的脚本
- nginx 日志配置log_format用法
- 《Linux内核设计与实现》读书笔记(三)- Linux的进程
- Dubbo的Provider配置
- wps怎么投递简历发到boss直聘_央视新闻联合BOSS直聘带“岗”年薪超82亿元
- python实现监控电脑打开网页_Python轻松实现动态网页爬虫(附详细源码)
- TCP协议之如何保证传输的可靠性
- winform 与WPF
- 将select中的项从一个移动到另一个select中
- “约见”面试官系列之常见面试题之第一百零一篇之vue-router传参(建议收藏)
- linux 检测mysql链接_MySQL笔记
- 状态管理 - 全局状态管理工具
- raspberry pi_您应该为项目选择哪种Raspberry Pi?
- JAVA编程规则【转自java编程思想】
- WebService—规范介绍和几种实现WebService的框架介绍
- matlab中x.^2与x^2有什么区别?
- 二进制和十进制的相互转换