组合相邻的2D点/范围

时间:2018-06-04 16:12:30

标签: java algorithm aspose

我正在使用Aspose Cells for Java

我正在使用Excel电子表格。我想遍历每个单元格,如果两个单元格正在触摸并共享相同的样式ID,请将它们组合到单独的单个范围中以供稍后处理。随着更多单元格的迭代,现有范围可能会增长。

范围包含startRowendRowstartColendCol属性。如果所有四个属性相等,则表示单个单元格。

例如,我希望{(1,1),(1,1)}{(2,2),(1,1)}合并为{(1,2),(1,1)}。同时{(1,1),(1,1)}{(2,2),(2,2)}不会合并,因为它们是对角线,而不是相邻的。

我认为我可以使用interval tree的变体,但我必须根据2D间隔进行调整。但是,在这种情况下,我不在乎两个范围重叠;如果两个范围重叠,则它们是重叠的矩形,在这种情况下,组合它们对于最小化总范围的数量无效。

Here is a crudely drawn idea of the intput/output I expect

我最好的猜测是我必须从每个单元格向外迭代并比较样式ID。当我从当前单元格上下移动时,检查该范围内的其余单元格是否具有相同的ID,并根据该区域创建新的范围。

思想?

0 个答案:

没有答案