Rumah > Soal Jawab > teks badan
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
世界只因有你2017-06-30 09:55:32
fungsi awam antara(){
$tar=[6,4];
if($tar[0]>$tar[1]){
$temp=$tar[0];
$tar[0]=$tar[1];
$tar[1]=$temp;
}
$all=[
[5,6],
[7,9],
[1,4],
[3,1],
[1,3],
[8,7]
];
//排序
foreach ($all as &$v){
if($v[0]>$v[1]){
$temp=$v[0];
$v[0]=$v[1];
$v[1]=$temp;
}
}
foreach ($all as $k=>$v){
$left=$tar[0]>$v[1];
$right=$v[0]>$tar[1];
if(!($left||$right)){
var_dump($v);
}
}
}
我想大声告诉你2017-06-30 09:55:32
Jika ini 一堆一段时间
perlu digunakan beberapa kali: anda boleh menggunakan pokok segmen garisan. "Perbandingan satu dengan satu" tidak akan menjadi lebih perlahan apabila digunakan sekali.
迷茫2017-06-30 09:55:32
# -*- coding: utf-8 -*-
def is_mixed(t1, t2):
'''
假定时间段格式是:"10:00:00-12:00:00"
判断 t1,t2是否有交集
'''
s1, e1 = t1.split("-")
s2, e2 = t2.split("-")
if s1 > e2 and s2 > e1:
return True
if s2 > e1 and s1 > e2:
return True
return False
t1 = "12:30:00-04:20:00"
t2 = "03:00:00-22:23:00"
if is_mixed(t1, t2):
print "有交集!"
else:
print "木有交集!"
Versi Python, js sepatutnya sama
怪我咯2017-06-30 09:55:32
Dengan cara ini, anda boleh memilih tempoh masa yang bertindih dengan tempoh dari tempoh.
period = "12:30:00-14:20:00"
periods = ["10:00:00-12:00:00", "12:10:00-12:50:00","14:30:00-15:00:00"]
print([x+'-'+y for [b,e] in [period.split("-")] for [x,y] in [p.split("-") for p in periods] if x<=e and y>=b])
漂亮男人2017-06-30 09:55:32
Tukar masa kepada integer 123000, dan nilai secara terbalik
a -- b
c -- d
Dalam keadaan apakah kedua-dua tempoh masa ini tidak bertindih?