当前位置:网站首页>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;
};边栏推荐
- How word displays modification traces
- 五金机电行业智能供应链管理系统解决方案:数智化供应链为传统产业“造新血”
- Optical blood pressure estimation based on PPG and FFT neural network [translation]
- GCC【7】- 编译检查的是函数的声明,链接检查的是函数的定义bug
- openmv4 学习笔记1----一键下载、图像处理背景知识、LAB亮度-对比度
- AvL树的实现
- 青龙面板最近的库
- Camel case with Hungarian notation
- Modulenotfounderror: no module named 'PIL' solution
- 同宇新材冲刺深交所:年营收9.47亿 张驰与苏世国为实控人
猜你喜欢

Online notes

Intelligent supply chain management system solution for hardware and electromechanical industry: digital intelligent supply chain "creates new blood" for traditional industries

Digital "new" operation and maintenance of energy industry

美庐生物IPO被终止:年营收3.85亿 陈林为实控人

Multithreading Basics: basic concepts of threads and creation of threads

Analysis of frequent chain breaks in applications using Druid connection pools

业务与应用同步发展:应用现代化的策略建议

MRO industrial products enterprise procurement system: how to refine procurement collaborative management? Industrial products enterprises that want to upgrade must see!

Understanding disentangling in β- VAE paper reading notes

RT-Thread 组件 FinSH 使用时遇到的问题
随机推荐
快速幂模板求逆元,逆元的作用以及例题【第20届上海大学程序设计联赛夏季赛】排列计数
MRO industrial products enterprise procurement system: how to refine procurement collaborative management? Industrial products enterprises that want to upgrade must see!
ModuleNotFoundError: No module named ‘PIL‘解决方法
Countdown 2 days | live broadcast preview of Tencent cloud message queue data import platform
Wx applet learning notes day01
Modulenotfounderror: no module named 'PIL' solution
About NPM install error 1
Camel case with Hungarian notation
R language ggplot2 visualization: use the ggstripchart function of ggpubr package to visualize the grouped dot strip plot, and set the add parameter to add box plots for different levels of dot strip
三面蚂蚁金服成功拿到offer,Android开发社招面试经验
Help improve the professional quality of safety talents | the first stage of personal ability certification and assessment has been successfully completed!
用于远程医疗的无创、无袖带血压测量【翻译】
Installation and management procedures
R语言使用dt函数生成t分布密度函数数据、使用plot函数可视化t分布密度函数数据(t Distribution)
助力安全人才专业素养提升 | 个人能力认证考核第一阶段圆满结束!
Test technology stack arrangement -- self cultivation of test development engineers
Certains marchés de l'emploi de Shanghai refusent d'embaucher des personnes qui se rétablissent positives à Xinguan
上海部分招工市场对新冠阳性康复者拒绝招录
Tongyu Xincai rushes to Shenzhen Stock Exchange: the annual revenue is 947million Zhang Chi and Su Shiguo are the actual controllers
星诺奇科技IPO被终止:曾拟募资3.5亿元 年营收3.67亿