想象一下,我给了你一组表格中的线段[(x1, y1), (x2, y2)]。我们有两个点定义了一条线段。就我们的目的而言,该部分始终是水平或垂直的。我想找到由线段包围的任何矩形的最大面积。
例如,当给定以下线段集时,结果应为绿色阴影区域的面积:
到目前为止,我能想到的唯一解决方案是蛮力 - 在运行时O(N^2)检查每对水平段 ( ) 和每对垂直段 ( O(N^2)) O(N^4)。显然,我们可以通过预先计算哪些片段可以放在一起来优化这一点,但这仍然会将时间复杂度保持在O(N^4)。
我正在寻找理想的O(N^2)解决方案,但如果您有任何不足,O(N^4)请分享!
algorithm big-o dynamic-programming time-complexity data-structures
Keras有合并的投入一样的许多不同的方式Add(),Subtract(),Multiply(),concatenate(),等...
它们都具有相同的效果,还是存在一个更好的情况?
我需要一个数据结构,允许您添加元素并O(1)及时随机删除它们.
这样做的原因是我需要从生成器中移植数据,但由于大小的原因,我无法同时将所有内容加载到内存中.
这是一个使用示例,它自动混合生成器表达式生成的结果的顺序,而不将所有内容加载到内存中:
def generator_shuffler(generator)
a = magical_data_structure_described_above
for i in generator:
a.add(i)
if len(a) > 10: yield a.poprandom()
Run Code Online (Sandbox Code Playgroud)
最初我尝试了一个python set(),但是从这里开始:Set.pop()不是随机的?,似乎set()实际上并没有以任意顺序删除项目.如何使用上述用法实现数据结构?