据我所知,leetcode可能是按最难那个用例给你打分的,非难题的用时好坏不完全看复杂度,因为可能都差不多,O(n/2)和O(n)虽然都是O(n),但是反应到成绩上是不同的,所以,尽可能的在条件足够的情况下提前break循环,是能增加成绩的。
933题,没有break耗时是有break的三倍多,所以,在复杂度之外,不要忽视小技巧。
class RecentCounter {
public:
const int backtrace_time = 3000;
deque<int> request_timestamp;
RecentCounter(){}
int ping(int t) {
request_timestamp.emplace_back(t);
for (auto it = request_timestamp.begin(); it != request_timestamp.end();++it){
if (*it < t - backtrace_time)
{
request_timestamp.pop_front();
}else{
// break;//有没有这个break至关重要
}
}
return request_timestamp.size();
}
};