数组 查找相邻的最大值

问题描述

有一组数组:Stringa[]={1,2,3,4,5,6,7,6,,5,4,3,2,1,2,3,4,5,6,5,4,3,2,1,2,3,4,5,6,7,8,7,6,5,4};数组为周期性变化,找出其中相邻的两个最大值,即Stringa[]={1,2,3,4,5,6,7,6,,5,4,3,2,1,2,3,4,5,6,5,4,3,2,1,2,3,4,5,6,7,8,7,6,5,4};或者Stringa[]={1,2,3,4,5,6,7,6,,5,4,3,2,1,2,3,4,5,6,5,4,3,2,1,2,3,4,5,6,7,8,7,6,5,4};并打输出其位置有什么好的解决方案,讨论下

解决方案

解决方案二:
想到了一个,遍历一遍所有的最大值,将对应的下表存入数组,取相邻的两个就行
解决方案三:
嗯最佳也是线性时间了,LZ自己说的就挺好
解决方案四:
如果都是这种离散线性正弦函数式数据,就是找峰值。下标从0开始有n个值,感觉可以从下标1遍历到下标n-2,然后a[i]>a[i-1]&&a[i]>a[i+1],此时i就是你要的下标了
解决方案五:
因为数组有规律所以楼上正解
解决方案六:
是有规律的??
解决方案七:
引用5楼rui888的回复:

是有规律的??

很像是规则波状数组,只不过是波峰高度不一样而已。遍历找相邻波峰就OK
解决方案八:
引用6楼u012842647的回复:

Quote: 引用5楼rui888的回复:
是有规律的??

很像是规则波状数组,只不过是波峰高度不一样而已。遍历找相邻波峰就OK

是的,不过我刚说的方法有个漏洞,如果第一个就是最大值的话,第二个波峰的位置就不会被记录
解决方案九:
引用3楼oh_Maxy的回复:

如果都是这种离散线性正弦函数式数据,就是找峰值。下标从0开始有n个值,感觉可以从下标1遍历到下标n-2,然后a[i]>a[i-1]&&a[i]>a[i+1],此时i就是你要的下标了

这种方法有些理想化,因为这是我写成这样,实际的数组,可能出现最大值出现相邻的情况,比方说这种情况,6,7,8,8,8,,7,6你这种判断就意外情况太多了
解决方案十:
引用8楼sjhxuelang的回复:

Quote: 引用3楼oh_Maxy的回复:
如果都是这种离散线性正弦函数式数据,就是找峰值。下标从0开始有n个值,感觉可以从下标1遍历到下标n-2,然后a[i]>a[i-1]&&a[i]>a[i+1],此时i就是你要的下标了

这种方法有些理想化,因为这是我写成这样,实际的数组,可能出现最大值出现相邻的情况,比方说这种情况,6,7,8,8,8,,7,6你这种判断就意外情况太多了

嗯,可以再借助一个辅助变量flag,专门记录当前值大于前一个值,则flag=1,小于前一个值则flag=-1,等于前一个值不变。每当flag由1变成-1的时候,就是峰值出现的时候。数组的开头、结尾单独判断即可。

时间: 2024-08-30 20:57:55

数组 查找相邻的最大值的相关文章

php数组查找函数总结_php技巧

本文实例总结了php数组查找函数.分享给大家供大家参考.具体如下: 这里提供三种方法来判断一个字符串中是否包括我们定义好的词,这比较适合于在留言,评论等地址进行关键词过滤,实例代码如下: 复制代码 代码如下: $crud = array('中国|||我国|||大地', 'kelon|||lerke|||sb', 'sesscxx'); $crud = join('|',$crud); $crud = str_replace('|||', '|', $crud); $pat  = "/({$cru

javascript中数组是如何求最大值

 数组如何求最大值,想必很多的朋友都不会吧,本文为大家介绍下javascript中数组是如何求最大值的,感兴趣的朋友不要错过 代码如下: <html>  <head>  <title>数组的最大值的获取</title>    <script>  //定义数组  var arr = [1,4,3,9,5,0,-1,7,22];    //最大值的下标,先假定为第一个元素的下标  var index = 0;  for(var x = 0; x &l

c语言指针数组 字符串-C语言指针数组查找问题

问题描述 C语言指针数组查找问题 #include#includevoid main(){ void input(char name[]int n); void sort(char *name[]int n); void print(char *name[]int n); void search(char *name[]int n); char *name[4]; int n=4; input(namen); sort(namen); print(namen); search(namen);}v

ios-IOS中如何数组内容比较得到最大值

问题描述 IOS中如何数组内容比较得到最大值 有数组charAry,数组内容为:9, 87bh, j65, 159, 27, 3582, 64957, hg75b, 20140402b,请问怎么比较得到整数最大值64957 解决方案 NSNumber * max = [charAry valueForKeyPath:@"@max.self"];

php使用array_search函数实现数组查找的方法_php技巧

本文实例讲述了php使用array_search函数实现数组查找的方法.分享给大家供大家参考.具体实现方法如下: <?php $array = array(4,5,7,8,9,10); $found = array_search(8, $array); //调用array_search函数并输出查找结果 if($found) //如果找到输出键 echo "已找到,键为".$found; else //如果没有找到输出错误信息 echo "没有找到"; ?&g

php小技巧 把数组的键和值交换形成了新的数组,查找值取得键

复制代码 代码如下: $cityname = array_flip($city_DB[name]); //把数组的键和值交换形成了新的数组 $city_name = array_search($city_id,$cityname,true); //查找值取得键

php求正负数数组中连续元素最大值示例

 问题是给出数组,该数组由正负数字组成,找出该数组中连续元素组成的子数组的最大值.下面是PHP实现的示例,需要的朋友可以参考下 php实现正负数数组最大子序列,要求给出数组,该数组由正负数字组成,找出该数组中连续元素组成的子数组的最大值. 这其实得算是个背包变种吧.   代码如下: <?php $list = array(1,-3,-5,-7,8,9,-11,5);   $cur = 0; $term = 0; $res = 0; $begin = 0;   foreach($list as $

C# 数组查找与排序实现代码_实用技巧

1. 查找对象 复制代码 代码如下: Person p1 = new Person( " http://www.my400800.cn " , 18 ); Person p2 = new Person( " http://www.my400800.cn " , 19 ); Person p3 = new Person( " http://www.my400800.cn " , 20 ); Person[] persons = ... { p1,

php求正负数数组中连续元素最大值示例_php实例

php实现正负数数组最大子序列,要求给出数组,该数组由正负数字组成,找出该数组中连续元素组成的子数组的最大值.这其实得算是个背包变种吧. 复制代码 代码如下: <?php$list = array(1,-3,-5,-7,8,9,-11,5); $cur = 0;$term = 0;$res = 0;$begin = 0; foreach($list as $k => $v){ $cur += $v; if($cur < 0){  $cur = 0;  $begin = $k + 1; }