Tentukan sama ada terdapat persimpangan antara tempoh masa dan sekumpulan tempoh masa. Jika masa mula dan tamat adalah sama, ia dinilai bahawa terdapat persimpangan
seperti
判断
12:30:00--14:20:00
与下列时间段是否有交集
10:00:00-12:00:00, 12:10:00-12:50:00 , 14:30:00-15:00:00
Tukar kepada cap masa dan kemudian bandingkan satu demi satu dalam satu gelung
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;
}
}
}
Ini boleh menyelesaikan masalah, tetapi kami sedang mencari kaedah yang lebih baik dengan kerumitan masa terkecil
fungsi awam antara(){
Tukar masa kepada cap masa, dan kemudian ------- bandingkan.
Jika ini
一堆一段时间
perlu digunakan beberapa kali: anda boleh menggunakan pokok segmen garisan. "Perbandingan satu dengan satu" tidak akan menjadi lebih perlahan apabila digunakan sekali.Versi Python, js sepatutnya sama
Dengan cara ini, anda boleh memilih tempoh masa yang bertindih dengan tempoh dari tempoh.
Tukar masa kepada integer 123000, dan nilai secara terbalik
a -- b
c -- d
Dalam keadaan apakah kedua-dua tempoh masa ini tidak bertindih?