diff --git a/heaps/compare_2_tops.py b/heaps/compare_2_tops.py deleted file mode 100644 index 55d38ca..0000000 --- a/heaps/compare_2_tops.py +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -# author: bt3gl - - -''' -You are given an array of integers stones where -stones[i] is the weight of the ith stone. - -We are playing a game with the stones. On each turn, -we choose the heaviest two stones and smash them together. -Suppose the heaviest two stones have weights x and y with -x <= y. The result of this smash is: - -If x == y, both stones are destroyed, and -If x != y, the stone of weight x is destroyed, and the stone -of weight y has new weight y - x. -At the end of the game, there is at most one stone left. - -Return the weight of the last remaining stone. -''' - -def last_stone(stones) -> int: - - for i in range(len(stones)): - stones[i] *= -1 - - heapq.heapify(stones) - - while len(stones) > 1: - - stone_1 = heapq.heappop(stones) - stone_2 = heapq.heappop(stones) - - if stone_1 != stone_2: - heapq.heappush(stones, stone_1 - stone_2) - - if stones: - return -heapq.heappop(stones) - - else: - return 0 - diff --git a/heaps/compare_two_tops.py b/heaps/compare_two_tops.py new file mode 100644 index 0000000..2aedb6a --- /dev/null +++ b/heaps/compare_two_tops.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# author: bt3gl + + +def compare_two_tops(array) -> int: + + for i in range(len(array)): + array[i] *= -1 + + heapq.heapify(array) + + while len(array) > 1: + + val1 = heapq.heappop(array) + val2 = heapq.heappop(array) + + if val1 != val2: + heapq.heappush(array, val1 - val2) + + if array: + return -heapq.heappop(array) + + return 0 +