【貪心演算法】
ans = ''
for item in character鍵的集合 from 最大 to 最小:
num 為 0:
結束,退出迴圈
num 不為 0:
if item <= num:
計算需要的個數 cnt = num // item
更新 num -= cnt * item
更新 ans += cnt * item 對應的值
else:
continue
時間複雜度:僅需遍歷一次dict即可結束,故為o(1)。
空間複雜度:使用的記憶體不會隨著輸入整數的大小而改變,故為o(1)。
character =
def romantoint(num: int) -> str:
ans = ''
for item in character.keys():
if num <= 0:
break
if item <= num:
ans += character[item] * (num // item)
num -= (num // item) * item
# print(ans)
return ans
def romantoint(num: int) -> str:
ans = ''
for item in character.keys():
if num <= 0:
break
if item <= num:
cnt, num = divmod(num, item) # 使用內部函式簡化**(但經測試執行速度不及前乙個版本)
ans += cnt * character[item]
# print(ans)
return ans
1、divmod(a, b) 函式返回值為元組(a // b, a % b) 12 整數轉羅馬數和13 羅馬數轉整數
題目的給出了幾種轉換策略,以及在個位是4,6的時候有一些變換。首先乙個整數num的範圍是1 3999,數字的位數情況是 千位,百位,十位,個位。每一位的數字其實就有四種情況,以百位為例 100,300 是一類 400是一類 500,800 是一類 900是一類 整個演算法上沒什麼特別困難的比較好理解...
1 2 Python3 基礎 規範
總的來說,如果安裝的不是安裝的anaconda,pip命令還是經常會用到的 cmd模式使用 當然也可以在pycharm中直接安裝 pep8規範,我另有一篇部落格已經寫好,可以完全參考其中的示例 後續還有很多,遇到了再新增!下附部分 import keyword 1 pip包 模組管理命令,主要以cm...
leetcode 整數轉羅馬數
羅馬數字包含以下七種字元 i,v,x,l,c,d 和 m。字元 數值 i 1v 5 x 10 l 50 c 100 d 500 m 1000 例如,羅馬數字 2 寫做 ii 即為兩個並列的 1。12 寫做 xii 即為 x ii 27 寫做 xxvii,即為 xx v ii 通常情況下,羅馬數字中小...