デモ テストを行ったところ、結果スコアは 62 でした。私のコードは、最高スコア 100 を達成するには効率的ではないと思います。たとえば、文字列はs="ACGTTAGTAC"
. s[p,q]
部分文字列から効率的に最小文字を見つけます。同じs
であるが異なる[p,q]
. 実際、この問題は Range Minimum Query ( RMQ ) と呼ばれ、問題を解決できるアルゴリズムは複数あります。しかし、それらを理解してこの特定のインスタンスに適用するのは困難です。誰でもコードを修正する方法をアドバイスできますか?
# s is a string, p and q are arrays of integers with p[i] <= q[i]
def solution (s, p, q)
len = s.length
a = Array.new(len,0)
for k in 0..len-1
case s[k]
when 'A'
a[k] = 1
when 'C'
a[k] = 2
when 'G'
a[k] = 3
when 'T'
a[k] = 4
end
end
s = []
m = p.size
for i in 0..m-1
s << a[p[i]..q[i]].min
end
s
end
著作権の問題により、質問全体はここにコピーされません。このリンクから完全な詳細を読むことができますhttps://codility.com/demo/results/demoHSB3XQ-R24/ .