当前位置:网站首页>LeetCode-1279. Traffic light intersection
LeetCode-1279. Traffic light intersection
2022-07-06 19:09:00 【Border wanderer】
This is the intersection of two roads . The first way is A road , The vehicle can move along 1 Heading from north to south , Can also be along 2 Heading from south to north . The second way is B road , The vehicle can move along 3 Drive from west to East in direction No , Can also be along 4 Drive from east to West in direction No .
Every road has a traffic light in front of the intersection . Traffic lights can be red or green .
The green light means that vehicles in both directions can pass the intersection .
The red light means that vehicles in both directions are not allowed to pass through the intersection , You must wait for the green light to come on .
Traffic lights on both roads cannot be green at the same time . It means , When A When the green light on the road comes on ,B The red light on the road will light up ; When B When the green light on the road comes on ,A The red light on the road will light up .
At the beginning of the ,A The green light on the road ,B The red light on the road is on . When the green light on a road lights up , All vehicles can pass through the intersection from any two directions , Until the green light on the other road . Vehicles on different roads cannot pass through the intersection at the same time .
Design a traffic light control system without deadlock for this intersection .
Implementation function void carArrived(carId, roadId, direction, turnGreen, crossCar) :
carId Is the number of the arriving vehicle .
roadId Is the number of the road where the vehicle is located .
direction For the direction of the vehicle .
turnGreen It's a function , Calling this function will cause the green light on the current road to light up .
crossCar It's a function , Calling this function will allow the vehicle to pass through the intersection .
When your answer avoids the deadlock of vehicles at the intersection , This answer will be considered correct . Turn on the green light when the green light has been on at the intersection , This answer will be considered wrong .
Example 1:
Input : cars = [1,3,5,2,4], directions = [2,1,2,4,3], arrivalTimes = [10,20,30,40,50]
Output : [
"Car 1 Has Passed Road A In Direction 2", // A The traffic lights on the road are green ,1 Car No. 1 can pass through the intersection .
"Car 3 Has Passed Road A In Direction 1", // The traffic lights are still green ,3 Car No. 2 goes through the intersection .
"Car 5 Has Passed Road A In Direction 2", // The traffic lights are still green ,5 Car No. 2 goes through the intersection .
"Traffic Light On Road B Is Green", // 2 Car number is B Road request green light .
"Car 2 Has Passed Road B In Direction 4", // B The green light on the road is now on ,2 Car No. 2 goes through the intersection .
"Car 4 Has Passed Road B In Direction 3" // The traffic lights are still green ,4 Car No. 2 goes through the intersection .
]
Example 2:
Input : cars = [1,2,3,4,5], directions = [2,4,3,3,1], arrivalTimes = [10,20,30,40,40]
Output : [
"Car 1 Has Passed Road A In Direction 2", // A The traffic lights on the road are green ,1 Car No. 1 can pass through the intersection .
"Traffic Light On Road B Is Green", // 2 Car number is B Road request green light .
"Car 2 Has Passed Road B In Direction 4", // B The green light on the road is now on ,2 Car No. 2 goes through the intersection .
"Car 3 Has Passed Road B In Direction 3", // B The green light on the road is now on ,3 Car No. 2 goes through the intersection .
"Traffic Light On Road A Is Green", // 5 Car number is A Road request green light .
"Car 5 Has Passed Road A In Direction 1", // A The green light on the road is now on ,5 Car No. 2 goes through the intersection .
"Traffic Light On Road B Is Green", // 4 Car number is B Road request green light .4 Car No. 1 is waiting for the light at the intersection , until 5 Car No. 2 goes through the intersection ,B The green light on the road is on .
"Car 4 Has Passed Road B In Direction 3" // B The green light on the road is now on ,4 Car No. 2 goes through the intersection .
]
explain : This is a deadlock free solution . Be careful , stay A The green light on the road 、5 Give way to... Before car No 4 Car No. 2 passed , It is also a correct and acceptable scheme .
Tips :
1 <= cars.length <= 20
cars.length = directions.length
cars.length = arrivalTimes.length
cars All values in are unique .
1 <= directions[i] <= 4
arrivalTimes Non decreasing .
#include<iostream>
#include<functional>
#include<mutex>
using namespace std;
class TrafficLight {
public:
TrafficLight() {
road = 'A';
}
void carArrived(
int carId, // ID of the car
int roadId, // ID of the road the car travels on. Can be 1 (road A) or 2 (road B)
int direction, // Direction of the car
function<void()> turnGreen, // Use turnGreen() to turn light to green on current road
function<void()> crossCar // Use crossCar() to make car cross the intersection
) {
std::lock_guard<mutex> lck(mtx);
if (direction <= 2 && road != 'A') {
turnGreen();
road = 'A';
}
else if(direction > 2 && road!='B') {
turnGreen();
road = 'B';
}
crossCar();
}
private:
char road = 'A';
std::mutex mtx;
};
边栏推荐
- R language uses the order function to sort the dataframe data, and descending sorting based on a single field (variable)
- Interface test tool - postman
- AcWing 3537.树查找 完全二叉树
- 抽象类与抽象方法
- [matlab] Simulink the input and output variables of the same module cannot have the same name
- R language ggplot2 visualization: use ggviolin function of ggpubr package to visualize violin diagram
- C#/VB. Net to add text / image watermarks to PDF documents
- Crawling data encounters single point login problem
- Binary search tree
- ModuleNotFoundError: No module named ‘PIL‘解决方法
猜你喜欢
Tongyu Xincai rushes to Shenzhen Stock Exchange: the annual revenue is 947million Zhang Chi and Su Shiguo are the actual controllers
Master Xuan joined hands with sunflower to remotely control enabling cloud rendering and GPU computing services
Intelligent supply chain management system solution for hardware and electromechanical industry: digital intelligent supply chain "creates new blood" for traditional industries
Mathematics in machine learning -- common probability distribution (XIII): Logistic Distribution
Digital "new" operation and maintenance of energy industry
涂鸦智能在香港双重主板上市:市值112亿港元 年营收3亿美元
LeetCode-1279. 红绿灯路口
[depth first search] Ji suanke: a joke of replacement
ROS custom message publishing subscription example
Yutai micro rushes to the scientific innovation board: Huawei and Xiaomi fund are shareholders to raise 1.3 billion
随机推荐
On AAE
Tensorflow and torch code verify whether CUDA is successfully installed
How to improve website weight
ROS custom message publishing subscription example
R language ggplot2 visualization: use ggviolin function of ggpubr package to visualize violin diagram
【论文笔记】TransUNet: Transformers Make StrongEncoders for Medical Image Segmentation
中缀表达式转后缀表达式详细思路及代码实现
Estimate blood pressure according to PPG using spectral spectrum time depth neural network [turn]
同宇新材冲刺深交所:年营收9.47亿 张驰与苏世国为实控人
Characteristic colleges and universities, jointly build Netease Industrial College
C#/VB. Net to add text / image watermarks to PDF documents
R语言ggplot2可视化:使用ggpubr包的ggviolin函数可视化小提琴图
If you have any problems, you can contact me. A rookie ~
AIRIOT物联网平台赋能集装箱行业构建【焊接工位信息监控系统】
R语言使用rchisq函数生成符合卡方分布的随机数、使用plot函数可视化符合卡方分布的随机数(Chi Square Distribution)
MRO industrial products enterprise procurement system: how to refine procurement collaborative management? Industrial products enterprises that want to upgrade must see!
包装行业商业供应链管理平台解决方案:布局智慧供应体系,数字化整合包装行业供应链
能源行业的数字化“新”运维
test about BinaryTree
MRO工业品企业采购系统:如何精细化采购协同管理?想要升级的工业品企业必看!