⭐每日一题⭐专栏

written by SJTU-XHW

本人学识有限,解析难免有错,恳请读者能够批评指正,本人将不胜感激!


Leetcode 495.【改】可重触发器74122

题干

假设有一个集成单稳态电路74122(可重触发器),输入上升沿触发,暂稳态维持时长为duration秒。

现给定一组输入高电平脉冲的输入时刻数组timeSeries(非递减的,例如timeSeries = [1,4]表示在第1、4秒开始时输入高电平脉冲),要求返回一个代表这个电路处于暂稳态的总时长的整型;

示例

示例 1:

1
2
输入:timeSeries = [1,4], duration = 2
输出:4

示例 2:

1
2
输入:timeSeries = [1,2], duration = 2
输出:3

思路

这题主要的难度在于题干含义的理解。集成单稳态电路的触发可以理解为含有冷却时间的机关,在高电平输入后具有 duration 时长的拒绝响应。因此这题可以采用初级数据结构中的 离散事件(驱动)模拟 的思想来完成。

实现

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
public:
int findTmpDuration(vector<int>& timeSeries, int duration) {
int currentTime = 0, sumTime = 0;
for (int t : timeSeries) {
if (currentTime > t && currentTime < t + duration)
sumTime += duration - currentTime + t;
else if (currentTime <= t) sumTime += duration;
if (currentTime < t + duration) currentTime = t + duration;
}
return sumTime;
}
};

评论
昼夜切换阅读模式