2014-01-27 80 views
0

我想从数组中删除一个元素。我有一个从1到9的整数的数组。我的算法搜索整行,如果行中的数字匹配数组中的数字,它删除数组中的数字。什么是最有效的算法来做到这一点?我正在考虑一个链表,因为我可以简单地缩短列表,但它可能会在以后引起混淆,并且可能不如数组。从数组中删除一个元素

+0

你问最高效的算法或容器?他们是两件不同的事情。 – chris

+3

使用'std :: vector'除非你有理由不这样做。在大多数情况下,'std :: vector'的性能优于'std :: list'的性能。 – olevegard

+0

不能从'int'数组中删除元素。他们有固定的大小,所以他们总是包含相同数量的元素。 – juanchopanza

回答

1

最有效的方法是使用另一个容器容器空白/完整阵列中每个插槽的标志。否则,每个元素都必须上移一个插槽。

0

这里有许多变量的简单方法可以给出一个很好的答案。

根据您的描述,您有2个数据结构,每个数据结构都有一个值列表,并且您想要从第一个结构中删除第二个结构中的所有值。第二种结构是什么样的结构?你有控制权吗?它是可以像set或unordered_set一样轻松快速地搜索的东西吗?还是它必须被迭代才能找到像链接列表这样的值?您要删除的数据结构是否需要按升序保存?

理想情况下,其中一个容器将不得不从头到尾迭代,而另一个容器将快速搜索。您希望您要删除的容器具有快速删除时间。如果数组需要按顺序保存,那么从数组中删除是一个耗时的过程,它需要A:将删除点的每个元素向前移动一个,然后跟踪数组的实际长度或B:复制数组的内容添加到缺少该元素的新数组中。真的,这里没有足够的信息来给你一个关于什么算法或容器最适合你的任务的好答案。