从数组中删除元素

时间:2014-01-27 22:09:04

标签: c++

我想从数组中删除一个元素。我有一个从1到9的整数数组。我的算法搜索一行,如果行中的数字与数组中的数字匹配,它会删除数字中的数字。阵列。使用它的最有效算法是什么?我正在考虑一个链表,因为我可以简单地缩短列表,但以后可能会让人感到困惑,它可能没有数组那么高效。

2 个答案:

答案 0 :(得分:1)

最有效的方法是为数组中的每个插槽使用另一个容器容器 empty / full 标志。否则,每个元素必须向上移动一个槽。

答案 1 :(得分:0)

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

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

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