请教一个算法问题~
问个算法问题:
比如说有这么一堆数:
25 26 35 36 35 34 37 36 34 35 56 57 58
我想要得到它们的平均数~
1、只保留这些比较密集的数字 35 36 35 34 37 36 34 35再求它们的平均数 25 26 56 57 58这些暂时称为不合法数(这些数字不是密集的在一起)被去掉
2、25 26 35 36 35 34 37 36 34 35 56 57 58的平均数是39
不希望看到拿每一个数和39比较的方法去掉不合法的数(当然我想要的数字不是39)
3、再作个例子说明: 比如有一张白纸 上面有很多黑点 去掉那些分散开的点 保留那些最密集的点
这个是怎么作一个判断的 ?
请就上面“25 26 35 36 35 34 37 36 34 35 56 57 58”写出一个算法来 要有具体的源代码~
[解决办法]
1、定义常数N;
2、假设有数组a[n],计算相邻项的差值得到数组b[n-1];
3、循环 分别取得b[n-1]中值大于N的项的下标,拆分a[n],得到一组一维数组List
4、循环List,如果List[i].size()<M,remove(如果要求不严格,size最大的项即为得到的子数组,否则处理remove后的List中的数组)
M,N为自定义的密集度 如题目中可设N=5,M=n/4=3