栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何将矩形阵列分组为相连区域的“岛屿”?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何将矩形阵列分组为相连区域的“岛屿”?

这是我最后寻求的解决方案。谁能猜出它的效率?

包java.util;

import java.awt.Rectangle;import java.util.ArrayList;import java.util.List;public class RectGroup extends ArrayList<Rectangle> implements List<Rectangle>{    public RectGroup(Rectangle... rects)    { super(rects);    }    public RectGroup()    {        super();    }    public boolean intersects(Rectangle rect)    {        for(Rectangle r : this) if(rect.intersects(r))     return true;        return false;    }    public List<RectGroup> getDistinctGroups()    {        List<RectGroup> groups = new ArrayList<RectGroup>();        // Create a list of groups to hold grouped rectangles.        for(Rectangle newRect : this)        { List<RectGroup> newGroupings = new ArrayList<RectGroup>(); // Create a list of groups that the current rectangle intersects. for(RectGroup group : groups)     if(group.intersects(newRect))         newGroupings.add(group); // Find all intersecting groups RectGroup newGroup = new RectGroup(newRect); // Create a new group for(List<Rectangle> oldGroup : newGroupings) {     groups.remove(oldGroup);     newGroup.addAll(oldGroup); } // And merge all the intersecting groups into it groups.add(newGroup); // Add it to the original list of groups        }        return groups;    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/410663.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号