连续登陆天数问题
2016-06-06 10:32:06 小德 算法 访问次数 1148


    web开发中我们常遇见 需要查询用户一个月以内连续登陆最长天数的情况。


    假设查询得到用户已登录的天数,为一维数组。


    算法思路:初始登录天数num为1,若后面一个连续则++;初始Max天数为1若存在 不连续的情况 如果 max<num 则将num赋给max ,同时重新初始化num;


   <?php
        $arr = array(2,3, 5,6,7, 9,10,11,12, 14,15,16,17,18);
        function getNum($arr){
        if(empty($arr)) {
            return 0;
        }
        $num = 1;
        $max = 1; //有数即为1;
        $count = count($arr);
                for($k=0;$k<$count;$k++) {
                    if($k+1<$count&&$arr[$k]+1==$arr[$k+1]) {     //$k+1<$count防止数组越界
                        $num++;
                    } else {
                        if($max<$num) {
                            $max = $num;
                        }
                        $num = 1;
                    }
                }
                return $max;
          
        }       
        echo getNum($arr);exit;
?>


output :5