xiaolingzi's blog

每天都在成长...

欢迎您:亲

抢红包功能的随机红包算法

xiaolingzi 发表于 2016-03-15 17:25:27

近来微信抢红包功能实在是太火了,最近我们自己的产品也要做一个红包功能,所以就想了一下其中的算法。

抢红包算法应该满足的硬性条件如下:

1. 规定人数的每个人都要领到红包。

2. 所有人领到的红包金额的总和要等于总金额。

根据以上条件很快就可以写完以下的算法

阅读全文
  • 分类: 算法
  • 阅读: (3388)
  • 评论: (0)

条件参数优先级的算法实现

xiaolingzi 发表于 2013-03-15 21:02:42

一、需求

有A,B,C,D四个参数,这四个参数分别为某一资源的属性,在获取资源时通过这四个参数进行过滤获取相应的唯一资源,而且每个参数也可以输入多个值,以逗号分隔,如果得不到相应的输入值的资源而放弃该条件限制时,可以加一个*号值作为条件。各个参数之间和同个参数的多个值之间是具有优先级的,以确定最终唯一的自由。参数的优先级是定死的,而同个参数的值之间的优先级根据输入的顺序从高到低。

上面的描述很难理解,下面我们举个例子来说明:

如url?A=A1,A2,A3&B=B1,B2,B3&C=C1,C2,C3&D=D1,D2,D3,D4

在这个例子中A B C D的优先级为从高到底,他们的值X1,X2,X3等的优先级也是从高到底。也就是说优先取满足A1,B1,C1,D1的数据,然后再取满足A1,B1,C1,D2的数据,其次为A1B1C1D3,A1B1C2D1,A1B1C2D2依此类推。

想要在D1,D2,D3

阅读全文
  • 分类: 算法
  • 阅读: (1809)
  • 评论: (0)

将1到n共n个连续整数打乱后随机拿掉其中3个,找出这三个整数

xiaolingzi 发表于 2012-05-14 21:13:56

题目:今有1到n共n个连续整数,将其打乱后随机拿掉3个,找出被拿掉的三个数。

思路:定义一个n维数组,遍历剩下的n-3个数,对数组中索引等于这些数时进行填充,然后再遍历该n维数组,若未被填充,则该索引即为被拿掉的数。算法的时间复杂度为2n-3。

下面是javascript的实现:

var findNumber = function () {
    //假设打乱的数组(n-3)
    var arr = [101, 234,..., 19999];
    var tempArr = new Array();
    for (var i = 0; i < arr.length; i++) {
        tempArr[arr[i]] = 1;
    }
    for (var k = 1; k <= n; k++) {
        if (tempArr[k] !== 1) {

阅读全文
  • 分类: 算法
  • 阅读: (2001)
  • 评论: (0)