外卖侠
之前看到某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));
}
}
阿里云成长空间 763人发布