LC 0158 [H] Read N Characters Given Read4 II Call multiple times - ALawliet/algorithms GitHub Wiki

read4 -> Queue -> buffer

# The read4 API is already defined for you.
# def read4(buf4: List[str]) -> int:

class Solution(object):
    def __init__(self):
        self.Q = deque()
        
    def read(self, buf, n):
        i = 0
        while i < n:
            if not self.Q:
                # read into queue
                buf4 = [''] * 4
                read_len = read4(buf4)
                if not read_len: break
                self.Q.extend(buf4)
            else:
                # transfer queue to buffer
                buf[i] = self.Q.popleft()
                i += 1
        return i