以下為我的天梯積分規則:
每日至少一題:一題積分+10分
若多做了一題(或多一種方法解答),則當日積分+20分(+10+10)
若做了三道以上,則從第三題開始算+20分(如:做了三道題則積分-10+10+20=40;做了四道題則積分–10+10+20+20=60)
初始分為100分
若差一天沒做題,則扣積分-10分(周六、周日除外注:休息)
堅持!!!
初級算法
刷題目錄
數學
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CMmNTN1MjNmR2Y1YGNiFGO5ImZ0MGZzcDZxIzMmZTY18CX5d2bs92Yl1iclB3bsVmdlR2LcNWaw9CXt92Yu4GZjlGbh5yYjV3Lc9CX6MHc0RHaiojIsJye.png)
題幹
羅馬數字包含以下七種字元: I, V, X, L,C,D 和 M。
字元 數值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
例如, 羅馬數字 2 寫做 II ,即為兩個并列的 1 。12 寫做 XII ,即為 X + II 。 27 寫做 XXVII, 即為 XX + V + II 。
通常情況下,羅馬數字中小的數字在大的數字的右邊。但也存在特例,例如 4 不寫做 IIII,而是 IV。數字 1 在數字 5 的左邊,所表示的數等于大數 5 減小數 1 得到的數值 4 。同樣地,數字 9 表示為 IX。這個特殊的規則隻适用于以下六種情況:
I 可以放在 V (5) 和 X (10) 的左邊,來表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左邊,來表示 40 和 90。
C 可以放在 D (500) 和 M (1000) 的左邊,來表示 400 和 900。
給定一個羅馬數字,将其轉換成整數。
示例1:
輸入: s = “III”
輸出: 3
示例2:
輸入: s = “IV”
輸出: 4
示例3:
輸入: s = “IX”
輸出: 9
示例4:
輸入: s = “LVIII”
輸出: 58
解釋: L = 50, V= 5, III = 3.
示例5:
輸入: s = “MCMXCIV”
輸出: 1994
解釋: M = 1000, CM = 900, XC = 90, IV = 4.
哈希表
分析:
其實道理都一樣,先将這些關鍵詞存入哈希表,然後周遊查表擷取表的值在相加得到最後的結果。
class Solution:
def romanToInt(self, s: str) -> int:
dictory = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000}
res = 0
n = len(s)
for x in range(n-1,-1,-1):
if res > 4*dictory[s[x]]:
res -= dictory[s[x]]
else:
res += dictory[s[x]]
return res