求数串中间的数据。

tangsave 2011-04-26 05:44:18
现有一串数据:

比如:12345432101234543210 ,真实的数据其实是一串递增然后又递减的数据。

有什么好算法得到数据中的3。求高手指点~~~
...全文
116 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangsave 2011-04-27
  • 打赏
  • 举报
回复
是这样,取得一串数据是周期变化的。

1234 5 4321 4567 8 7654

这串数据,1-4 4-1 这个周期内,5是最高,我要取到这周期两边3这个数。
下个周期是4-7 7-4 8是最高,我要取到6这个数。如何通过算法来定位,周期中的 3或6。
这串数是连起来的 123454321456787654 怎么算出是两个周期,然后取到每一个周期中的两边的中间值。
showjim 2011-04-27
  • 打赏
  • 举报
回复
每个周期都可以在log(n)的时间复杂度内找到
qq675927952 2011-04-27
  • 打赏
  • 举报
回复
LZ 要是121121怎么取数。。。
steryzone 2011-04-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 icerainfc522 的回复:]
记录第一个数1,a(1)=1,依次判断a(i)是否等于第一个数,cnt=cnt+a(i),Number++;
当a(9)=1=a(1)时,说明一个序列结束,此时计算mid=(a(1)+(a(1)+(Number-1)/2))/2=(1+5)/2=3,即第一个数和最大的数的和除以2(等差数列公式)
然后重复一个周期
[/Quote]

跟我想的差不多。。
都是先拿第一个,然后再继续下去,如果找到第一个相同的就说明是一组的
icerainfc522 2011-04-27
  • 打赏
  • 举报
回复
记录第一个数1,a(1)=1,依次判断a(i)是否等于第一个数,cnt=cnt+a(i),Number++;
当a(9)=1=a(1)时,说明一个序列结束,此时计算mid=(a(1)+(a(1)+(Number-1)/2))/2=(1+5)/2=3,即第一个数和最大的数的和除以2(等差数列公式)
然后重复一个周期
tangsave 2011-04-27
  • 打赏
  • 举报
回复
tangsave 2011-04-27
  • 打赏
  • 举报
回复


数据串截断后得到的波形如上。
tangsave 2011-04-27
  • 打赏
  • 举报
回复


这串数组我画出图形如上。需求就是红线切掉下面的数据,计算出蓝点的位置。

x轴为0起始,y轴就是这串数据的顶值。然后得到此波形。
每一个大波形一半开始截断,小波形排除。

ImN1 2011-04-26
  • 打赏
  • 举报
回复
中间值的话,求平均数,不过确实没搞清LZ的需求
qq675927952 2011-04-26
  • 打赏
  • 举报
回复
没看懂题目意思 ,什么3

33,006

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧