TGViewer
Kotlin | LeetCode Kotlin | LeetCode @easy_kotlin_task · 1.7K subscribers
Post #1613 133
Задача: 1033. Moving Stones Until Consecutive
Сложность: medium

На оси X расположены три камня в разных позициях. Вам даны три целых числа a, b и c - позиции камней. За одно движение вы берете камень в конечной точке (т. е. либо в самой низкой, либо в самой высокой позиции камня) и перемещаете его в незанятую позицию между этими конечными точками. Формально, допустим, камни в данный момент находятся в позициях x, y и z, причем x < y < z. Вы берете камень в позиции x или z и перемещаете его в целочисленную позицию k, причем x < k < z и k != y. Игра заканчивается, когда вы больше не можете сделать ни одного хода (то есть камни находятся в трех последовательных позициях). Возвращается целочисленный массив answer длины 2, где: answer[0] - минимальное количество ходов, которое вы можете сыграть, а answer[1] - максимальное количество ходов, которое вы можете сыграть.

Пример:
Input: a = 3, b = 5, c = 1
Output: [1,2]


👨‍💻 Алгоритм:

1⃣Сортировка позиций:
Убедитесь, что позиции камней отсортированы в порядке возрастания. Обозначим отсортированные позиции как x, y и z.

2⃣Вычисление минимальных ходов:
Если камни уже находятся в последовательных позициях (то есть y - x == 1 и z - y == 1), минимальное количество ходов равно 0.
Если два камня находятся в соседних позициях, а третий камень на расстоянии более чем одна позиция, минимальное количество ходов равно 1.
В остальных случаях минимальное количество ходов равно 2.

3⃣Вычисление максимальных ходов:
Максимальное количество ходов равно сумме расстояний между соседними камнями минус 2, то есть (y - x - 1) + (z - y - 1).

😎 Решение:
class Solution {
fun numMovesStones(a: Int, b: Int, c: Int): IntArray {
val stones = listOf(a, b, c).sorted()
val x = stones[0]
val y = stones[1]
val z = stones[2]
val minMoves = if (y - x <= 2 || z - y <= 2) if (y - x == 1 && z - y == 1) 0 else 1 else 2
val maxMoves = (y - x - 1) + (z - y - 1)
return intArrayOf(minMoves, maxMoves)
}
}


Ставь 👍 и забирай 📚 Базу знаний
More from @easy_kotlin_task
  1. Oct 9, 2026Задача: 1102. Path With Maximum Minimum Value Сложность: medium Дана целочисленная матрица…
  2. Oct 7, 2026Задача: 257. Binary Tree Paths Сложность: easy Дано корневое дерево, верните все пути от к…
  3. Oct 7, 2026🔥 Скрытые вакансии с удаленной работой для Android разработчика, которые нигде больше не…
  4. Oct 6, 2026Задача: 491. Non-decreasing Subsequences Сложность: medium Дан массив целых чисел nums. Ве…
  5. Oct 5, 2026Задача: 635. Design Log Storage System Сложность: medium Вам дается несколько журналов, гд…
  6. Oct 5, 2026Задача: 1209. Remove All Adjacent Duplicates in String II Сложность: medium Вам дана строк…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →