Сложность: 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.
😎 Решение:
public class Solution {
public int reachTarget(int target) {
target = Math.abs(target);
int position = 0;
int steps = 0;
while (position < target || (position - target) % 2 != 0) {
steps++;
position += steps;
}
return steps;
}Ставь 👍 и забирай 📚 Базу знаний