zoukankan      html  css  js  c++  java
  • 巧妙利用枚举找出数组元素所在区间

    如题,巧妙利用枚举找出数组元素所在区间
    以下从Redis获取hash数据集,定位数据元素所在$coins_config对应的区间

    ps:对于+=运算等,数组必须初始化,不然会报错。

    //登录金币
    $coins_cofig = [0,3500,20000,30000,60000,100000,250000,500000,1000000,2500000];
    $len = count($coins_cofig);
    //初始化计数
    $num = [];    //对应区间的元素个数
    $coins = [];
    for ($i=0; $i < $len; $i++) {
        $num[$i]   = 0;
        $coins[$i] = 0;
    }
    $redis_hash_key = "***";
    $data_coins = $redis->hgetall($redis_hash_key);
    //计算
    foreach ($data_coins as $k => $v) {   //$k => user_id, $v => coins
        for ($i=0; $i < $len; $i++) {
            $right = isset($coins_cofig[$i + 1]) ? $coins_cofig[$i + 1] : 0;
            if ($v >= $coins_cofig[$i] && $v < $right) {
                $num[$i]++;
                $coins[$i]+=$v;
            }    
        }
        if ($v >= end($coins_cofig)) {
            $num[$len - 1]++;
            $coins[$len - 1]+=$v;
        }
    }
    慢慢来才是最快的
  • 相关阅读:
    noip2011 总结
    noip2010 总结
    noip2009 总结
    noip2008 总结
    noip2006总结
    noip2007 总结
    noip2006 总结
    【模板】线段树模板
    【数学】8.30题解-count数页码
    【数论】8.30题解-prime素数密度 洛谷p1835
  • 原文地址:https://www.cnblogs.com/jongty/p/11653826.html
Copyright © 2011-2022 走看看