之前有空閒時小雷會做一些Hacker Rank的解題,以免用R寫數據分析後Python全都忘光光,解題目前討論度高的大概就是HackerRank與LeeCode了,LeeCode雖然也有解一些題目,但是submit之後會有跑了幾秒、記憶體消耗了多少甚麼的,對小雷這種初學者來說實在看了心驚..
網路上看很多人說到HackerRank題目大概是LeeCode的簡易程度,恩..這個小雷倒是感覺不出來,算一算真的開始接觸編程(R、Python)大概是半年多,還有非常非常多需要熟悉了解的事情。
解這些題目時,並不是甚麼最佳化解,出發點是以能了解題目在說甚麼,解題方式是目前自己可以理解並解答完成的模式去走,先解的出來,未來再一步步朝著更高一階去進行,所以請別太苛責啦!!
小雷的Solution :
'''
題目 :
判斷一個arr中數字正負數字出現的次數
將其除與arr的長度後轉換為十進制
範圍 :
0 < n <= 100
-100 < len(arr) <= 100
解題方向 : 設定正負個數、判斷正負後做計算
'''
def plus_minus(arr, n) :
# 設定正、負、零個數
po = 0
ne = 0
ze = 0
# 判斷n與arr範圍
if 0 < n <= 100 and -100 < len(arr) <= 100 :
# 取arr的長度作為迴圈範圍
for i in range(len(arr)) :
# arr[i] >> 取出arr中0,1,2,3,4,5的值判斷正負
if arr[i] > 0 :
# 個數加一
po += 1
elif arr[i] < 0 :
ne += 1
elif arr[i] == 0 :
ze += 1
# 依照題目的公式計算
print("po = ", "%f"%(po / len(arr)))
print("ne = ", "%f"%(ne / len(arr)))
print("ze = ", "%f"%(ze / len(arr)))
else :
print("error arr and n")
if __name__ == "__main__" :
arr = [-4, 3, -9, 0, 4, 1]
n = 6
plus_minus(arr, n)
沒有留言:
張貼留言