优化动态删除集合中的元素如何删除一个集合中满足条件的所有元素? 这是一个很常见的问题,解决方式也五花八门。 常用的思路一般是找出所有集合中所有满足条件的集合存起来,再遍历这个集合删除其中的元素这种方式虽然简单,但有两个缺点 1. 会额外增加GC,因为new了一个新的集合 2. 会增加额外的遍历次数(第二次集合的遍历) 还见过另外一种思路,foreach中remove之后递归这...Weekend大约 2 分钟算法
A* 寻路算法在Unity中的实现及广度优先、Djkstra、最好优先贪婪算法思想简介:搜索区域 绿色是起点A,红色是终点B,蓝色的是障碍物强。假设我们要从A点走到B点。 假设整张地图是搜索区域,那么把整张地图划分为方块状的网格,这样便简化了搜索区域,如此便能用二维数组来表示整张地图。而每一个网格分有可行走和不可行走两个状态。通过从A到B走那些网格来确定路径。 开始搜索 上一步我们将地图简化为可管理的二维数组,下一步就是搜索最短路径...Weekend大约 10 分钟算法
DDA画线算法及在PyOpenGL上的实现DDA画线算法 DDA画线算法也叫数值微分算法。其算法原理如下: 算法原理 DDA算法的基础就是初中数学中的斜截式方程y=kx+b。 斜率k=Δy/Δx,Δy=y2-y1,Δx=x2-x1。所以k=(y2-y1)/(x2-x1)。这也是斜截式方程的特点。知道坐标系内的任意两点就能求其一元二次方程。 因此,给出一个起点和终点就能画出一条线。 算法优化 一...Weekend大约 2 分钟算法