A good way to print all time slots from an event object

I work with an event object that includes a start and end time. I want to print all the intervals for some arraylist event objects, but can only think of a solution to triangular brute force. Suppose our arraylist has the following events:

Event 1: start = 130, end = 145

Event 2: start = 135, end = 155

Event 3: start = 145, end = 155

Event 4: start = 215, end = 230

Event 5: start = 215, end = 230

Then we would like to print something like:

130 - 135

135 - 145

145 - 155

215 - 230

, , - . , , , . . , - , , .

(, , , ). !

.

+4
1

. node node, .

, , - , . , , .

: - ( , ), , . .

:

  • se -
  • ee -
  • si - node
  • ei - node

, , . , , :

  • end case: , node root , .
  • end case: , node node.
  • node ( ) - node node, node.
  • node ( ) - node .
  • node ( node si ei node se ee) - , - {se-si}{si-ei}{ei-ee} - . , node , .
  • node (si se, ee ei) - , , , node {se-ee}, : {si-se}{se-ee}{ee-ei}. , node.
  • node , (se=si, ei<ee), node {ei-ee} node ( ), node.
  • node , (se>si, ei=ee), node {se-si} , node ( ), node.
  • node , (se=si, ei>ee), node {ee-ei} node node. node {si-ei} {si-ee}.
  • node , (se<si, ei=ee), node {se-si} node, node. node {si-ei} {se-ei}.
  • node (se<si ee<ei), , - {se-si}{si-ee}{ee-ei}. , node set , node.
  • node (se>si ee>ei), , - {si-se}{se-ei}{ei-ee}. , node set , node.
  • , , , .

, , , , . , , , , .

+3

Source: https://habr.com/ru/post/1687166/


All Articles