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.

lock icon+13 скрытых тестов при отправке

challenge icon

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

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

Сбросить код
def lastStoneWeight(stones):
    # Напишите код здесь
Тестовые случаи

Случай 1

Случай 2

Случай 3

Ввод

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

Ожидается

0