gpt4 book ai didi

algorithm - 使用 O(1) 空间的运行长度编码

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:49:40 26 4
gpt4 key购买 nike

我们可以就地进行行程编码吗(假设输入数组非常大)我们可以为AAAABBBBCCCCDDDD等案例做A4B4C4D4

但是ABCDEFG这样的case怎么办呢?其中输出为 A1B1C1D1E1F1G1

最佳答案

我的第一个想法是从末尾开始编码,所以我们将使用空闲空间(如果有的话),然后我们可以将编码数组移到开头。这种方法的一个问题是它不适用于 AAAAB,因为没有可用空间(A4B1 不需要它),我们将尝试在第一次迭代时写入 AAAAB1。

下面是更正的解决方案:(假设序列是 AAABBC)

  1. 用两个或更多元素对所有组进行编码并保持其余不变(这不会增加数组的长度)-> A3_B2C
  2. 将所有内容右移,消除第一步后的空格 -> _A3B2C
  3. 从头开始对数组进行编码(当然是重复使用已经编码的组)-> A3B2C1

每一步都是 O(n),据我所知,只需要恒定的额外内存。

限制:

  1. 不支持数字,但如 Petar Petrov 所述,无论如何都会造成解码问题。
  2. 我们需要某种“空”字符,但这可以通过添加零来解决:A03 而不是 A3_

关于algorithm - 使用 O(1) 空间的运行长度编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10926851/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com