def get_max_values_of_list(data_list, window_length): q = Queue() res = [] for index, data in enumerate(data_list): put_queue(q, index, data_list) if q.peek() == index - window_length: q.poll() if index >= window_length - 1: res.append(data_list[q.peek()]) return res
def get_num(arr, num): if arr is None or len(arr) == 0: return qmin = Queue() qmax = Queue() start = 0 end = 0 res = 0 length = len(arr) while start < length: while end < length: while (not qmax.is_empty()) and arr[qmax.peek()] <= arr[end]: qmax.poll() qmax.add(end) while (not qmin.is_empty()) and arr[qmin.peek()] >= arr[end]: qmin.poll() qmin.add(end) if arr[qmax.peek()] - arr[qmin.peek()] > num: break end += 1 print(start, end - 1) res += end - start if qmax.peek() == start: qmax.poll() if qmin.peek() == start: qmin.poll() start += 1 return res
class DogCatQueue(object): def __init__(self): self.content = Queue() self.length_of_dog = 0 self.length_of_cat = 0 self.length_of_queue = 0 def add(self, data): self.content.add(data) if data.get_pet_type == 'cat': self.length_of_cat += 1 elif data.get_pet_type == 'dog': self.length_of_dog += 1 self.length_of_queue += 1 def poll_all(self): return self.poll_all() def _poll_what(self, what): for _ in range(self.length_of_queue): out = self.content.poll() if out.get_pet_type == what: yield out else: self.add(out) def poll_dog(self): self._poll_what('dog') def poll_cat(self): self._poll_what('cat') def is_empty(self): return self.length_of_queue == 0 def is_dog_empty(self): return self.length_of_dog == 0 def is_cat_empty(self): return self.length_of_cat == 0