数组求L位置到R位置之和

给定一个数组,长度为N,给定左边位置L,右边位置R,求L到R位置的和。

思路1:

建立一张正方形的表结构,记录各个位置的和。

优点:在查询频繁时,速度快。

缺点:浪费空间,有接近1/2位置浪费

0 1 2 3 4 5
1
2 X
3 X X
4 X X X
5 X X X X

思路2:

每次循环求和

优点:

缺点:慢

思路3:

提供一个预数组,长度也为N,每个位置存储0-N位置的和,在求L到R位置的和时只需array[R]-array[L-1].
如果L为0,直接返回array[R]

优点:相比于思路1,不浪费空间

缺点:在请求频繁时效率低于思路1,需要减操作

链接:

https://github.com/feng0xing/note/tree/feature/develop algorithm模块 work.day.two.SumArrayFromLeftRight

Math.Random

Math.Random 范围[0,1)
�给出某个数x->【0,1),随机数x出现在0-x范围的概率为x
�给出某个数x->【0,1),使随机数x出现在0-x范围的概率为x的平方
�给出某个数x->【0,1),使随机数x出现在0-x范围的概率为x的3次方

代码地址:

algorithm模块 work.day.two.MathRandom

等概率扩展

给定一个函数f(x),其中1-5都是等概率出现,只能使用f(x)的情况下,使1-7等概率出现。

代码地址:

algorithm模块 work.day.two.EqualProbabilityExtension

不等概率变等概率

给定一个函数f(x),其中0-1都是固定概率,不等概率出现,只能使用f(x)的情况下,使0-1等概率出现

代码地址:

algorithm模块 work.day.two.NotEqualProbabilityToEqual

对数器:

对方法进行验证,使用随机样本,验证方法的正确性。