Menu
CoddyTech

Last Stone Weight

ЛегкоКучаpython iconjava iconcpp iconc iconjs icon+10

У тебя есть куча камней, а stones[i] — это вес камня i. В каждом раунде бери два самых тяжёлых камня и разбивай их друг о друга. Если они весят одинаково, оба уничтожаются. Если нет, более лёгкий камень уничтожается, а более тяжёлый уменьшается на разницу между их весами.

Напиши lastStoneWeight, которая проводит раунды, пока не останется не более одного камня, и возвращает его вес или 0, если камней не осталось.

Функция

lastStoneWeight(stones: integer-array) → integer
stonesinteger-array
веса камней в куче
Возвращаетinteger
вес последнего камня или 0, если камней не осталось

Ограничения

  • 1 ≤ stones.length ≤ 104
  • 1 ≤ stones[i] ≤ 1000

Примеры

Ввод
stones = [3, 9, 4, 6, 2]
Вывод
0
Пояснение
9 и 6 оставляют 3, затем 4 и 3 оставляют 1, затем 3 и 2 оставляют ещё один 1. Два камня весом 1 уничтожают друг друга, поэтому ответ — 0.
challenge icon

Дополнительный вопрос

Веса не превышают 1000. Можешь ли ты использовать это ограничение, чтобы решить задачу за время O(n + W), где W — наибольший вес, без кучи?

Сбросить код
def lastStoneWeight(stones):
    # Напишите код здесь

Тест #1

Тест #2

Тест #3

Аргумент

stones = [3, 9, 4, 6, 2]

Ожидаемый вывод

0