Déterminez s'il existe une intersection entre une période de temps et un groupe de périodes de temps. Si les heures de début et de fin sont les mêmes, on estime qu'il y a une intersection
telle que
判断
12:30:00--14:20:00
与下列时间段是否有交集
10:00:00-12:00:00, 12:10:00-12:50:00 , 14:30:00-15:00:00
Convertissez en horodatage, puis comparez-les un par un dans une boucle
function is_cross($st1, $et1, $st2, $et2)
{
$status = $st2 - $st1;
if ($status > 0) {
$status2 = $st2 - $et1;
if ($status2 >= 0) {
return false;
} else {
return true;
}
} else {
$status2 = $et2 - $st1;
if ($status2 > 0) {
return true;
} else {
return false;
}
}
}
Cela peut résoudre le problème, mais nous recherchons une meilleure méthode avec la plus petite complexité temporelle
fonction publique inter(){
Convertissez l'heure en horodatage, puis ------- comparez.
Si ceci
一堆一段时间
doit être utilisé plusieurs fois : vous pouvez utiliser un arbre de segments de ligne. La « comparaison individuelle » ne sera pas plus lente lorsqu'elle est utilisée une seule fois.Version Python, js devrait être le même
De cette façon, vous pouvez sélectionner la période qui chevauche la période parmi les périodes.
Convertissez le temps en un entier 123000, et jugez à l'envers
a -- b
c -- d
Dans quelles circonstances ces deux périodes de temps ne se chevauchent-elles pas ?