2526. Find Consecutive Integers from a Data Stream
Description
For a stream of integers, implement a data structure that checks if the last k
integers parsed in the stream are equal to value
.
Implement the DataStream class:
DataStream(int value, int k)
Initializes the object with an empty integer stream and the two integersvalue
andk
.boolean consec(int num)
Addsnum
to the stream of integers. Returnstrue
if the lastk
integers are equal tovalue
, andfalse
otherwise. If there are less thank
integers, the condition does not hold true, so returnsfalse
.
Example 1:
Input ["DataStream", "consec", "consec", "consec", "consec"] [[4, 3], [4], [4], [4], [3]] Output [null, false, false, true, false] Explanation DataStream dataStream = new DataStream(4, 3); //value = 4, k = 3 dataStream.consec(4); // Only 1 integer is parsed, so returns False. dataStream.consec(4); // Only 2 integers are parsed. // Since 2 is less than k, returns False. dataStream.consec(4); // The 3 integers parsed are all equal to value, so returns True. dataStream.consec(3); // The last k integers parsed in the stream are [4,4,3]. // Since 3 is not equal to value, it returns False.
Constraints:
1 <= value, num <= 109
1 <= k <= 105
- At most
105
calls will be made toconsec
.
Solution
find-consecutive-integers-from-a-data-stream.py
class DataStream:
def __init__(self, value: int, k: int):
self.value = value
self.k = k
self.A = deque()
def consec(self, num: int) -> bool:
if num == self.value:
self.A.append(num)
else:
self.A.clear()
if len(self.A) > self.k:
self.A.popleft()
return len(self.A) == self.k
# Your DataStream object will be instantiated and called as such:
# obj = DataStream(value, k)
# param_1 = obj.consec(num)