有一个rdd和一系列的值,这些值是正数和负数的混合。需要根据这些数据计算周期数。
例如, val range = List(sampleRange(2020,2030,2040,2050,-1000,-1010,-1020,Starting point,-1030,2040,-1020,2050,2040,2020,end point,-1060,-1030,-1010)
上面列表中每个值之间的间隔为1秒。也就是说,2020年和2030年以1秒的间隔记录,以此类推。
它从负变正并保持正的次数>=2秒。
如果>=2秒,则为循环。
循环数:逻辑
示例1:列表(1、2、3、4、5、6、-15、-66)
循环数为1。
原因:当我们从列表的第一个元素移动到第六个元素时,我们有5个间隔,也就是5秒。所以一个周期。当我们移到列表的第6个元素时,它是一个负值。所以我们从第六元素开始数到第七元素。负值仅为2,间隔仅为1。所以不算循环。
例2:
列表(11,22,33,-25,-36,-43,20,25,28)
循环次数为3。
原因:当我们从列表的第一个元素移到第三个元素时,我们有两个间隔,也就是2秒。所以当我们移动到列表的第四个元素时,它是一个负值。所以我们从第四元素开始数到第五,第六元素。我们有2个间歇,也就是2秒。所以当我们移动到列表的第7个元素时,它是一个正值。所以我们从第七元素开始数到第八,第九元素。我们有2个间歇,也就是2秒。所以一个周期。
范围是用例中的rdd。看起来像
scala>范围
范围:seq[com.range]=list(xtreamrange(858890899920,startengage,-758,-790,-890,-7209209450))
3条答案
按热度按时间gfttwv5a1#
一行
这将生成长度为3的所有子序列,并统计有多少子序列是-ve、+ve、+ve
广义循环长度
kgsdhlau2#
下面的代码将帮助您解决您的查询。
} }
xmjla07d3#
您可以将其编码为“它从负变为正并保持正持续>=2秒的次数”。如果>=2秒,这是一个循环。”几乎直接进入一个模式匹配与后卫。表达式
if(h < 0 && ht > 0 && hht > 0)
检查一个循环并将其添加到结果中,然后继续执行列表的其余部分。