Ci viene dato un flusso continuo di intervalli interi come [1,3], [5,10], [2,6], ... quando arriva ogni nuova gamma, dobbiamo controllare con intervalli esistenti e vedere se si sovrappone a qualsiasi intervallo esistente e, se viene rilevata una sovrapposizione, tutti gli intervalli sovrapposti vengono rimossi e viene invece inserito l'intervallo unito. Abbiamo bisogno di un algoritmo efficiente per questo. Si noti che l'intervallo viene fornito uno alla volta che forma uno stream ...come unire efficacemente intervalli int in uno stream?
È stata posta questa domanda durante un'intervista. Idee?
L'intento è quello di unire intervalli sovrapposti in uno. per esempio, se abbiamo 3 gamme che vengono nel seguente ordine: [1,3], [2,6], [5,10]. Quindi prima fondiamo i primi due in [1,6], quindi ci fondiamo con il terzo e diventa [1,10].
La tua domanda non è chiara. Vuoi che l'output sia un singolo stream come [1,2,3,5,6,7,8,9,10,2,3,4,5,6]? –
@Jim Mischel: assumevo che ogni tupla fornisse un inizio e una fine di un intervallo, quindi, dopo la prima tupla, l'intervallo risultante includerebbe [1,2,3]. Dopo la seconda tupla, l'intervallo risultante sarebbe [1,2,3,5,6,7,8,9,10] (n. 4). – oosterwal
ai miei occhi un possibile output logico dovrebbe essere un elenco di intervalli (ordinati?) Che uniscono intervalli sovrapposti – kriss