Сложность: medium
Вы стоите в позиции 0 на бесконечной числовой прямой. В позиции target находится пункт назначения. Вы можете сделать некоторое количество ходов numMoves так, чтобы: на каждом ходу вы могли пойти либо налево, либо направо. Во время i-го хода (начиная с i == 1 до i == numMoves) вы делаете i шагов в выбранном направлении. Учитывая целое число target, верните минимальное количество ходов (т.е. минимальное numMoves), необходимое для достижения пункта назначения.
Пример:
Input: target = 2
Output: 3
👨💻 Алгоритм:
1⃣Инициализируйте переменную для текущей позиции (position) и счетчик шагов (steps).
2⃣Используйте цикл, чтобы добавлять к position текущее количество шагов и увеличивать steps.
3⃣Если position достигает или превышает target и разница между position и target четная, остановите цикл и верните steps.
😎 Решение:
def reachTarget(target):
target = abs(target)
position = 0
steps = 0
while position < target or (position - target) % 2 != 0:
steps += 1
position += steps
return steps
Ставь 👍 и забирай 📚 Базу знаний