Morphological Segmentation 形态分割算法
形态分割的主要亮点是算法简单和计算速度快。
1.该算法在栅格地图 𝑀1上工作,栅格分为可访问和不可访问两种类型,白色区域代表可访问性,黑色区域表示不可访问性。如图 fig.1 左上角图片。
2.对地图 𝑀1 可访问区域(白色区域)进行形态学腐蚀操作,该操作是通过一个像素一圈一圈地重复腐蚀一定次数(用户设定的参数)。之后得到一些连通区域和分离区域。如图 fig.1 右上角图片。
3.在步骤 2 中,注意一定要一个像素一圈一圈地腐蚀。每次腐蚀后判断每个分离区域的面积,若分离区域大小在合适范围内(用户设定的区域大小上下限内),那么标记该分离区域的所有栅格为房间 𝑟𝑖。地图 𝑀2 是地图 𝑀1 的拷贝。把分离出来的房间 𝑟𝑖 在地图 𝑀2中并标记上不同颜色,并且把 𝑀1 中房间 𝑟𝑖 区域标记为不可访问区域。如图 fig.1 左下角图片是标记了房间的 𝑀2。
4.重复“腐蚀-分离”操作,就能够得到一系列分离的房间并标记在地图 𝑀2 中。然后扩散每个房间,直到地图 𝑀2 中的可访问区域被标记完。如图 fig.1 右下角。
LeetCode 面试经典150题 [63/150 分隔链表]
给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。
你应当 保留 两个分区中每个节点的初始相对位置。
示例 1:
LeetCode 面试经典150题 [62/150 旋转链表]
给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。
示例 1:
LeetCode 面试经典150题 [61/150 删除排序链表中的重复元素 II]
给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。
示例 1:
LeetCode 面试经典150题 [60/150 删除链表的倒数第N个结点]
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
示例 1:
LeetCode 面试经典150题 [59/150 K个一组翻转链表]
给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。
k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。
你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。
示例 1:
LeetCode 面试经典150题 [58/150 随机链表的复制]
本题很不错,建议自己思考提交通过后看答案,受益匪浅
LeetCode 面试经典150题 [57/150 反转链表II]
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表
示例一