g0801_0900.s0818_race_car.Solution Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java Show documentation
Show all versions of leetcode-in-java Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
package g0801_0900.s0818_race_car;
// #Hard #Dynamic_Programming
import java.util.LinkedList;
import java.util.Queue;
public class Solution {
public int racecar(int target) {
Queue queue = new LinkedList<>();
queue.add(new int[] {0, 1, 0});
while (!queue.isEmpty()) {
int[] arr = queue.poll();
if (arr[0] == target) {
return arr[2];
}
queue.add(new int[] {arr[0] + arr[1], 2 * arr[1], 1 + arr[2]});
if ((arr[0] + arr[1]) > target && arr[1] > 0) {
queue.add(new int[] {arr[0], -1, 1 + arr[2]});
}
if ((arr[0]) + arr[1] < target && (arr[1] < 0)) {
queue.add(new int[] {arr[0], 1, 1 + arr[2]});
}
}
return -1;
}
}