-2

デモ テストを行ったところ、結果スコアは 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/ .

4

1 に答える 1