梳理下《流浪地球》题目的逻辑
1. 创建一个在此时刻启动的发动机编号队列`engines_to_spread`(待扩散)
2. 将当前时刻`current_time`要手动启动的发动机编号放入队列中
3. 更新扩散的左右邻居发动机启动时间
1. 获取当前时刻要启动的发动机的左右邻居发动机编号(`left_neighbor`和`right_neighbor`)
2. 如果邻居发动机最早启动时间未初始化(`earliest_start_time[id] == -1`)则更新邻居发动机启动时间为下一时刻(`current_time + 1`)
4. 获取发动机最早启动时间数据中,最晚启动的数据
5. 输出结果
这个题目用到的知识为:
1. BFS层级遍历:理解如何按时间分层处理事件。
2. 环形结构处理:模运算在环形数组中的应用。
3. 时间轴模拟:如何用数组代替优先队列管理事件。
4. 多源最短路径:多个起点同时扩散的算法思想。
不瞒大家,这个题目我用了一天的时间去理解,感觉自己都麻了~累死了
今天跟老妈打了个电话,明天要戴着表跑步了~明天继续加油呀!
1. 创建一个在此时刻启动的发动机编号队列`engines_to_spread`(待扩散)
2. 将当前时刻`current_time`要手动启动的发动机编号放入队列中
3. 更新扩散的左右邻居发动机启动时间
1. 获取当前时刻要启动的发动机的左右邻居发动机编号(`left_neighbor`和`right_neighbor`)
2. 如果邻居发动机最早启动时间未初始化(`earliest_start_time[id] == -1`)则更新邻居发动机启动时间为下一时刻(`current_time + 1`)
4. 获取发动机最早启动时间数据中,最晚启动的数据
5. 输出结果
这个题目用到的知识为:
1. BFS层级遍历:理解如何按时间分层处理事件。
2. 环形结构处理:模运算在环形数组中的应用。
3. 时间轴模拟:如何用数组代替优先队列管理事件。
4. 多源最短路径:多个起点同时扩散的算法思想。
不瞒大家,这个题目我用了一天的时间去理解,感觉自己都麻了~累死了
今天跟老妈打了个电话,明天要戴着表跑步了~明天继续加油呀!





