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 integers- valueand- k.
- boolean consec(int num)Adds- numto the stream of integers. Returns- trueif the last- kintegers are equal to- value, and- falseotherwise. If there are less than- kintegers, the condition does not hold true, so returns- false.
Β
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 105calls will be made toconsec.
Solution
Python3
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)