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 TestQueue(unittest.TestCase): def setUp(self): self.queue = Queue() def enqueue_test_values(self): self.queue.enqueue(1) self.queue.enqueue(2) self.queue.enqueue(3) def test_initializer(self): self.assertEqual(self.queue.linked_list.node_count, 0) def test_enqueue(self): self.enqueue_test_values() self.assertEqual(self.queue.linked_list.node_count, 3) def test_dequeue(self): self.enqueue_test_values() self.assertEqual(self.queue.dequeue().value, 1) self.assertEqual(self.queue.dequeue().value, 2) self.assertEqual(self.queue.dequeue().value, 3) def test_node_at_index(self): self.enqueue_test_values() self.assertEqual(self.queue.linked_list.node_at_index(1).value, 2) def test_is_empty(self): self.assertTrue(self.queue.is_empty()) self.enqueue_test_values() self.assertFalse(self.queue.is_empty())
def simulation(): person_queue = Queue() for i in xrange(10): person_queue.enqueue(Person(0)) waiting_list = [] elevators = [] for i in xrange(6): elevators.append(Elevator()) def new_comer(time): # every seconds comes 1 to 5 person for i in xrange(random.randint(1, 6)): person_queue.enqueue(Person(time)) for sec in xrange(3600): new_comer(sec) for e in elevators: if e.is_available() and not person_queue.is_empty(): e.take(person_queue, sec, waiting_list) e.tick() print "Average waiting time on 1st floor: %f" % \ (sum(waiting_list) / float(len(waiting_list)))
def simulation(): person_queue = Queue() for i in xrange(10): person_queue.enqueue(Person(0)) waiting_list = [] elevators = [] for i in xrange(6): elevators.append(Elevator()) def new_comer(time): # every seconds comes 1 to 5 person for i in xrange(random.randint(1, 6)): person_queue.enqueue(Person(time)) for sec in xrange(3600): new_comer(sec) for e in elevators: if e.is_available() and not person_queue.is_empty(): e.take(person_queue, sec, waiting_list) e.tick() print "Average waiting time on 1st floor: %f" % \ (sum(waiting_list) / float(len(waiting_list)))
def test_queue(self): queue = Queue() self.assertEqual(queue.is_empty(), True) self.assertEqual(queue.peek(), None) queue.queue("first_in_line") self.assertEqual(queue.peek(), "first_in_line") self.assertEqual(queue.is_empty(), False) queue.queue("second_in_line") self.assertEqual(queue.de_queue(), "first_in_line") self.assertEqual(queue.peek(), "second_in_line") self.assertEqual(queue.de_queue(), "second_in_line") self.assertEqual(queue.is_empty(), True) self.assertEqual(queue.peek(), None)
def test_queue(self): q = Queue() self.assertEqual(True, q.is_empty()) self.assertEqual(0, q.size()) q.enqueue(1) self.assertEqual(False, q.is_empty()) self.assertEqual(1, q.size()) q.enqueue(True) q.enqueue("Hello, World") self.assertEqual(3, q.size()) self.assertEqual(1, q.dequeue()) self.assertEqual(True, q.dequeue()) self.assertEqual(1, q.size()) q.dequeue() self.assertEqual(True, q.is_empty())
def test_queue(self): q = Queue() self.assertEqual(True, q.is_empty()) self.assertEqual(0, q.size()) q.enqueue(1) self.assertEqual(False, q.is_empty()) self.assertEqual(1, q.size()) q.enqueue(True) q.enqueue("Hello, World") self.assertEqual(3, q.size()) self.assertEqual(1, q.dequeue()) self.assertEqual(True, q.dequeue()) self.assertEqual(1, q.size()) q.dequeue() self.assertEqual(True, q.is_empty())
def traversal_level_order(self): # o(n) for time # o(n) for space if self.root is None: return node_queue = Queue() node_queue.queue(self.root) value = [] while not node_queue.is_empty(): current_node = node_queue.de_queue() value.append(current_node.value) if current_node.left is not None: node_queue.queue(current_node.left) if current_node.right is not None: node_queue.queue(current_node.right) return value
def simulation(numSeconds, pagesPerMinute): labprinter = Printer(pagesPerMinute) printQueue = Queue() waitingtimes = [] for currentSecond in range(numSeconds): if newPrintTask(): task = Task(currentSecond) printQueue.enqueue(task) if (not labprinter.busy()) and (not printQueue.is_empty()): nexttask = printQueue.dequeue() waitingtimes.append(nexttask.waitTime(currentSecond)) labprinter.startNext(nexttask) labprinter.tick() averageWait = sum(waitingtimes) / len(waitingtimes) print("Finished tasks %3d Average Wait %6.2f secs %3d tasks remaining." % (len(waitingtimes), averageWait, printQueue.size()))