arrays - 点阵算法

标签 arrays algorithm

我在设计一种算法时遇到了问题,该算法几乎可以像蛇游戏中那样使用包含线上所有点的数组来移动线条。我会做类似...

for (int x = 0; i < array.length; i++) { 
     array[i] = array[i+1]
}
array[array.length] = (the new point)

但这会在一秒钟内发生很多次,而且速度很慢。我想做一些类似的事情,但不是每次都移动每个数字,而是将它们留在数组中的相同位置,但保存了一个 int 以跟踪下一个将被删除的数字以及将包含新数字的数字。 如果你对我刚才说的有任何想法,请帮助我。谢谢

最佳答案

使用 circular buffer .这可以使用一个数组和两个索引(一个用于头,一个用于尾)来实现。如果蛇的长度始终相同,则可以使用单个索引。

使用这样的结构,您需要的整个操作可以在常数时间内完成(即独立于数组的大小)。

关于arrays - 点阵算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18966520/

相关文章:

java - 比较 vector 并选择公共(public)元素java

java - 传递字节数组出现越界错误,但它通过了 junit 测试

java - 正确使用抽象方法

php - 拆分 MySQL 结果数组以输出总和和类别标题

algorithm - 所有对的异或值之和

python - 计算 numpy 数组 python 中字符串出现次数的更快方法

java - 如何检查两个顶点之间的图形连通性

algorithm - 只要启发式是可接受的,A* 就可以使用负权重吗?

javascript - 如何获取 JavaScript 中所有可能的字符?

algorithm - 使用电话键盘生成 10 位数字