外卖侠
之前看到某w有个机考题目,用BFS写了下。
原贴可参考:
https://www.nowcoder.com/discuss/721268?channel=-1&source_id=discuss_terminal_discuss_sim_nctrack&ncTraceId=d8ccd19b56bd40559427540ad48a2528.169.16301666546391309
“给定起始位置N和目的楼层M,骑手可以上一层楼N+1/下一层楼N-1/坐电梯上到2N,花费时间都是1s,问最快多久能到达目的楼层
import java.util.LinkedList; import java.util.Queue; class Solution { public int waimai(int N, int M) { int step = 0; Queue<Integer> queue = new LinkedList<>(); if (N == M) return 0; queue.add(N); while (queue.size()>0){ //一定要单独写,防止更新。 int size = queue.size(); for (int i = 0; i < size; i++) { int floor = queue.poll(); if(floor==M){ return step; } queue.offer(floor - 1); queue.offer(floor + 1); queue.offer(2 * floor); } step++; } return step; } public static void main(String[] args) { System.out.println(new Solution().waimai(2,6)); } }