假设给定了一个数组,您必须找到包含相同数量字符和数字的最长连续子数组。例如,我们有一个像 ('a',0,'v',2,4,7,'e','f','b',2,5,2,1) 这样的字符数组。
在这种情况下,最长的子数组将是 ('v',2,4,7,'e','f','b',2),因为它将是 4 个字符和 4 个数字。
我已经解决了类似的问题,比如“最大连续子阵列问题”,但我就是无法解决这个问题。此外,如果这是一个众所周知的问题,那么最好的解决方案是什么?是否可以用 O(n) 的时间复杂度来解决它?
如果范围 [x,y] 具有与字符相同数量的整数,则范围 [0,x] 和 [0,y] 具有相同的 (num ints) - (num chars) 值。我们可以使用它来计算线性时间、线性空间中的答案,方法是维护整数与字符的累积差异的散列。
longest_length(最初为 0)和start_index(最初为 nil)longest_length并适当更新。如果没有,请更新哈希。最后,答案是[start_index, start_index + longest_length]。
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |