擅长:python、mysql、java
<p>首先,必须分割实线:</p>
<pre><code>min_boundaries = set(min for id, min, max in orig)
max_boundaries = set(max for id, min, max in orig)
segment_boundaries = sorted(list(min_boundaries | max_boundaries))
</code></pre>
<p>然后,对于每个区段,检查哪些灯光照亮该区段。线段中间的一个点就足够了:</p>
<pre><code>result = []
old_boundary = segment_boundaries[0]
for boundary in segment_boundaries[1:]:
bounds = [old_boundary, boundary]
middle = (old_boundary + boundary) / 2
ids = [id for id, min, max in orig if min < middle < max]
result.append(ids)
result.append(bounds)
old_boundary = boundary
</code></pre>