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

时间:2012-05-25 10:12:18

标签: algorithm

COuld你建议我在O(n)时间内没有外部存储器从给定数组中删除所有零的最佳算法。 例如,1 2 0 0 3 2 0 2变为1 2 3 2 2

1 个答案:

答案 0 :(得分:16)

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

  • 使用数组上的reader指针迭代 - 如果元素为零,则仅增加它。
  • 如果元素不为零 - 写入并增加两个指针。