外卖侠

之前看到某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));
    }
}
全部评论

相关推荐

今天 11:36
苏州大学 设计
点赞 评论 收藏
分享
点赞 评论 收藏
分享
求面试求offer啊啊啊啊:把华北改为华南再试一试,应该就没啥问题了。改完可能都不用投,别人主动联系了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务