2
我上this hackerrank challenge工作。紅寶石階乘代碼運行速度太慢
我想嘗試與紅寶石的問題,這是我寫的代碼:
gets.to_i.times do
num_people = gets.to_i
num_people_factorial = (1..num_people).inject(:*) || 1
numerator = num_people_factorial
if num_people > 2
denominator = 2*((1..num_people - 2).inject(:*) || 1)
elsif num_people == 2
denominator = 2
else
denominator = 10000
end
puts numerator/denominator
end
問題是,當我在我的電腦上運行它,我得到正確的答案,但我當通過Hackerrank的系統運行它,測試用例超時 - 它們執行的速度不夠快,無法進行評分。
我如何優化此代碼?
編輯:當我提交的代碼,我看到這樣的結果:
我親臨現場,並複製粘貼您的編碼準確,跑了編碼。它與他們的測試案例完美配合。 –
你剛剛「運行」或「提交」了代碼嗎?因爲我現在已經提交了這個代碼三次,所以只通過了10個測試用例中的三個 – johncorser
不想提交你的編碼是誠實的。你可以使用這樣的東西: tot = 1; 1.step(i,1).to_a.each {| x | tot = tot * x};提出TOT –