Interseção de intervalos

Crie um método que receba um array de intervalos e retorne quantos intervalos contêm um determinado ponto.

Um intervalo contém um determinado ponto se o ponto estiver dentro do intervalo ou em seu limite. Por exemplo, o ponto 3 está contido no intervalo [2, 4] (está dentro dele) e no intervalo [2, 3] (está no limite).

Para ilustrar:

Program.countOverlapping(new int[][]{{1, 2}, {2, 3}, {1, 3}, {4, 5}, {0, 1}}, 2) ➞ 3
// Isso ocorre porque [1, 2], [2, 3] e [1, 3] contêm o ponto 2.

Exemplos

Program.countOverlapping(new int[][]{{1, 2}, {2, 3}, {3, 4}}, 5) ➞ 0

Program.countOverlapping(new int[][]{{1, 2}, {5, 6}, {5, 7}}, 5) ➞ 2

Program.countOverlapping(new int[][]{{1, 2}, {5, 8}, {6, 9}}, 7) ➞ 2

Observações

  • Cada intervalo é representado por um array com um ponto inicial e um ponto final.
  • Os intervalos são considerados interseccionados mesmo que se cruzem em apenas um ponto; por exemplo, [2, 3] e [3, 4] se cruzam no ponto 3.
  • Se for útil, você pode desenhar esses intervalos sobre uma reta em uma folha de papel.