私はこれを試していますHackerRank problem。これまでのところ、このコードは次のようになりました。カウントソートの実装はPythonで
n = int(raw_input())
ar = []
for i in xrange(n):
ar.append(raw_input().split())
output = [0] * 1000000
count = [0] * 100
for a in ar:
count[int(a[0])] += 1
total = 0
for a in xrange(100):
old = count[a]
count[a] = total
total += old
for a in ar:
if ar.index(a) < n/2:
output[count[int(a[0])]] = '-'
else:
output[count[int(a[0])]] = a[1]
count[int(a[0])] += 1
for o in output:
if type(o) != str:
break
else:
print o,
5つのテストケースのうち、1つしか通過しませんでした。 2は実行時間が長いためタイムアウトしましたが、それは今は私の優先事項ではありません。私の優先事項は、完全に失敗した他の2つのテストケースに合格しています。私はどこに間違っていたのかわかりません。私はおそらく私のコードをより効率的にすることができるのは分かっていますが、今は正しい出力を得ることに集中しています。
私はサインアップせずに1つのテストケースしか実行できません。パフォーマンスのために:a)データをロードしている間は、最初に一度int()コンバージョンを実行します。分割し、 'int()'に変換してから 'ar.append'を実行してください。 b)最初の半分をダッシュで置き換えるのと同じですが、配列にロードするときに最初の半分を知っているときは、output [count [int(a [0')を使用しないでください。 c) '出力 'を大きくする必要はなく、代わりに' [0] * n'にする - メモリ使用量を減らす。 d)すべての出力に対して 'type(o)'テストをスキップして、単にoを出力してください。 – TessellatingHeckler