Робот начинает движение из точки (0, 0), начала координат на плоскости 2D. Получив последовательность движений, определите, окажется ли робот в точке (0, 0) после завершения всех своих движений.
Вам дана строка moves, которая представляет последовательность движений робота, где moves[i] — это его i-е движение. Допустимые движения: 'R' (вправо), 'L' (влево), 'U' (вверх) и 'D' (вниз).
Верните true, если робот вернётся в начало координат после завершения всех движений, или false в противном случае.
Примеры
Пример 1
Input: moves = "UD"
Output: true
Пояснение
Робот движется вверх, затем вниз — возвращается в начало координат.
Пример 2
Input: moves = "LL"
Output: false
Пояснение
Робот дважды сдвигается влево и оказывается на два шага левее начала.
Решение
Решение
// Временная сложность: O(N) — проходим по каждому движению 1 раз.// Пространственная сложность: O(1) — константное количество переменных (объект costs и массив из двух чисел).var judgeCircle = function(moves) { const costs = { U: [0, 1], L: [-1, 0], R: [1, 0], D: [0, -1] } const coordinates = [0, 0]; for (let i = 0; i < moves.length; i++) { coordinates[0] += costs[moves[i]][0]; coordinates[1] += costs[moves[i]][1]; } return coordinates[0] === 0 && coordinates[1] === 0;};
Решение 2
var judgeCircle = function(moves) { let x = 0; let y = 0; for (let i = 0; i < moves.length; i++) { if (moves[i] === 'U') y++; else if (moves[i] === 'D') y--; else if (moves[i] === 'L') x--; else if (moves[i] === 'R') x++; } return x === 0 && y === 0;};