Leetcode-PHP题解D50-933-Number-of-Recent-Calls

44次阅读

共计 633 个字符,预计需要花费 2 分钟才能阅读完成。

D50 933. Number of Recent Calls

题目链接

933. Number of Recent Calls

题目分析

这个题目说实在的,看得我一脸蒙蔽。

返回自 3000 毫秒到现在为止 ping 的次数(包括当前 ping)。

ping 函数时,传入的参数 t 为当前 ping 的毫秒数。

思路

其实是说,返回前 3000 毫秒内 ping 的次数。

把每次 ping 的毫秒数存起来,然后往回找 3000 毫秒内的 ping。

即,给当前 ping 次数加 1,直到当前毫秒数减前面 ping 的毫秒数大于 3000。

最终代码

<?php
class RecentCounter {public $pings = [];
    public $head = 0;

    function __construct() {}
    function ping($t) {if(is_null($t)){return null;}
        $this->pings[] = $t;
        
        while(($this->pings[count($this->pings)-1]-$this->pings[$this->head])>3000){$this->head++;}
        return count($this->pings)-$this->head;
    }
}
/**
 * Your RecentCounter object will be instantiated and called as such:
 * $obj = RecentCounter();
 * $ret_1 = $obj->ping($t);
 */ 

若觉得本文章对你有用,欢迎用爱发电资助。

正文完
 0