algorithm - 从数组 O(n) 中删除所有零,没有额外的内存

标签 algorithm

您能否建议我在 O(n) 时间内从给定数组中删除所有零且无需外部存储器的最佳算法。 例如,1 2 0 0 3 2 0 2 变成 1 2 3 2 2

最佳答案

使用两个指针 - 一个用于读取,一个用于写入。

  • 迭代数组上的读取器指针 - 如果元素为零,则只增加它。
  • 如果元素不为零 - 写入它并增加两个指针。

关于algorithm - 从数组 O(n) 中删除所有零,没有额外的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10752534/

相关文章:

c++ - 如何在给定前两个数字的级数中找到大于 x 的第 n 个最小子数组和?

algorithm - 构建给定约束的图形

.net - .NET 中 Array 类的 sort() 方法使用的算法是什么?

arrays - 从两组中找到元素的所有组合,以使它们的几何均值落入第三组

javascript - 根据端口号获取 tcp/udp 协议(protocol)名称(字符串)?

python - 调试反向传播算法

java - 查找所有可能的路径算法

database - 部分堆排序以在 5GB 文件中找到 k 个最频繁出现的单词

c - 哪个更可能浪费更少的内存,一个大内存管理器还是几个小内存管理器?

arrays - 在大小为 N 且元素范围为 0 到 N-1 的整数数组中查找总和为 X 的对