【发布时间】:2016-06-10 04:43:45
【问题描述】:
原问题:
如果单词中的每两个字母,如果第一个出现x 次,第二个出现y 次,则一个单词是K-good,那么|x - y| ≤ K.
给定一个单词 w,他需要删除多少个字母才能使其成为 K-good?
Problem Link.
我已经解决了上述问题,我没有要求解决上述问题 问题
我只是第一次看错了这个陈述,只是想我们如何在线性行时间内解决这个问题,这只是产生了一个新问题
修改问题
如果单词中每两个连续的字母,如果第一个出现x 次,第二个出现y 次,则一个单词是K-good,那么|x - y| ≤ K.
给定一个单词 w,他需要删除多少个字母才能使它成为 K-good?
这个问题是否可以在线性时间内解决,我想过但找不到任何有效的解决方案。
解决方案
我的方法:我无法接近我喜欢的人,但她是我解决这个问题的方法,尝试一切(来自电影 Zoopopia)
即
for i range(0,1<<n): // n length of string
for j in range(0,n):
if(i&(1<<j) is not zero): delete the character
Now check if String is K good
对于N 在10^5 范围内。时间复杂度:该维度中不存在时间。
这个问题有没有线性解决方案,像stackoverflow的人一样简单甜美。
For Ex:
String S = AABCBBCB and K=1
If we delete 'B' at index 5 so String S = AABCBCB which is good string
F[A]-F[A]=0
F[B]-F[A]=1
F[C]-F[B]=1
and so on
我想这是一个简单的例子,还有更复杂的例子,比如删除一个 I 元素使 (I-1) 和 (I+1) 成为连续的
【问题讨论】:
-
你能举个例子来说明你修改后的问题吗?
-
你能接受复杂度 = O(n^2) 的解决方案吗?