Es scheint, dass Codierungstests in Ingenieurinterviews im Ausland durchgeführt werden, und in vielen Fällen besteht die Hauptsache darin, bestimmte Funktionen und Klassen entsprechend dem Thema zu implementieren.
Anscheinend ergreifen viele Ingenieure Maßnahmen auf der Website namens LetCode.
Es ist eine Site, die die algorithmische Leistung trainiert, die dem Codierungstest standhält, der in der frühen Geschichte durchgeführt wird, und es ist ein unvermeidlicher Weg für diejenigen, die eine Karriere bei einem ausländischen Technologieunternehmen aufbauen möchten.
Ich habe es groß geschrieben, aber ich habe im Moment keine Pläne für ein solches Interview.
Als IT-Ingenieur ist es jedoch besser, die gleiche Algorithmusleistung wie eine Person zu haben. Daher möchte ich das Problem unregelmäßig lösen und die Methode, die ich damals dachte, als Memo aufschreiben.
Ich löse es mit Python3.
Letztes Mal Leet Code Day73 ab Null "1491. Durchschnittsgehalt ohne Mindest- und Höchstgehalt"
Im Moment priorisiere ich das Medium der 100 beliebtesten Fragen. Easy wurde gelöst. Wenn Sie interessiert sind, gehen Sie bitte zum Tisch.
Twitter Ich mache es.
** Technischer Blog Gestartet! !! ** ** ** Ich denke, die Technologie wird über LetCode, Django, Nuxt usw. schreiben. ** Dies ist schneller zu aktualisieren **, vielen Dank für Ihre Mitarbeit!
12. Integer to Roman Der Schwierigkeitsgrad ist Mittel.
Ich hatte ein schlechtes Gefühl, weil es mehr Bads gibt ...
Römische Zahlen werden durch sieben verschiedene Symbole dargestellt. Es wird durch sieben verschiedene Symbole dargestellt: I, V, X, L, C, D und M. In diesem Problem wird es wie folgt konvertiert.
Symbol Value
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
Zum Beispiel wird 2 in römischen Zahlen als II geschrieben, aber dies ist nur die Addition von zwei Einsen. 12 ist als XII geschrieben, aber dies ist nur X + II. Die Zahl siebenundzwanzig wird als XXVII geschrieben, was XX + V + II ist.
Römische Zahlen werden normalerweise von links nach rechts geschrieben, von größer nach kleiner. Aber die Nummer 4 ist nicht IIII. Stattdessen wird die Nummer 4 als IV geschrieben. 1 steht vor 5, subtrahieren Sie es also, um 4 zu erhalten. Die Nummer 9 wird nach dem gleichen Prinzip als IX geschrieben. Es gibt sechs Beispiele für die Verwendung der Subtraktion.
Wenn I vor V (5) und X (10) steht, wird es zu 4 und 9. X ist 40 und 90, wenn es vor L (50) und C (100) steht. Wenn Sie C vor D (500) und M (1000) setzen, erhalten Sie 400 und 900.
Das Problem besteht darin, einen Algorithmus zu entwerfen, der gemäß den obigen Regeln in römische Zahlen konvertiert, wenn eine ganze Zahl angegeben wird.
Es wird bestätigt, dass die Eingabe im Bereich von 1 bis 3999 liegt.
Example 1: Input: 3 Output: "III"
Example 2: Input: 4 Output: "IV"
Example 3: Input: 9 Output: "IX"
Example 4: Input: 58 Output: "LVIII" Explanation: L = 50, V = 5, III = 3.
Example 5: Input: 1994 Output: "MCMXCIV" Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.
class Solution:
def intToRoman(self, num: int) -> str:
nums = (1000,900,500,400,100,90,50,40,10,9,5,4,1)
roman = ("M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I")
ans = ""
while num != 0:
for i, j in enumerate(nums):
if num >= j:
num -= j
ans += roman[i]
break
return ans
# Runtime: 52 ms, faster than 60.03% of Python3 online submissions for Integer to Roman.
# Memory Usage: 13.9 MB, less than 33.48% of Python3 online submissions for Integer to Roman.
Halten Sie jeden Wert in "nums" und "roman", drehen Sie die for-Anweisung, bis sie 0 wird, dekrementieren Sie sie nur dann um j, wenn der Wert j oder mehr ist, und fügen Sie den Index von roman zu "ans" hinzu ,.
Da die Werte von "nums" und "roman" übereinstimmen, kann der Index so verwendet werden, wie er ist. Wenn ich jetzt darüber nachdenke, finde ich es nicht erfrischender, ein Wörterbuch zu verwenden.
Darüber hinaus diskutieren einige diskutieren Antworten wie folgt mit roher Gewalt.
class Solution(object):
def intToRoman(self, num):
"""
:type num: int
:rtype: str
"""
result = []
if num>=1000:
times = num/1000
result.append(times*'M')
num = num%1000
if num>=900:
result.append('CM')
num -=900
if num>=500 and num<900:
result.append('D')
num -= 500
if num>=400 and num<500:
result.append('CD')
num-=400
if num >=100 and num<400:
times = num/100
result.append(times *'C')
num = num%100
if num >=90 and num<100:
result.append('XC')
num-=90
if num >=50 and num<90:
result.append('L')
num-=50
if num>=40 and num<50:
result.append('XL')
num-=40
if num>=10 and num<40:
times = num/10
result.append(times*'X')
num %= 10
if num==9:
result.append('IX')
num-=9
if num>=5 and num<9:
result.append('V')
num-=5
if num==4:
result.append('IV')
num-=4
if num>=1 and num<=3:
result.append(num*'I')
num-=num
return ''.join(result)
# Runtime: 20 ms, faster than 99.65% of Python online submissions for Integer to Roman.
# Memory Usage: 12.7 MB, less than 65.50% of Python online submissions for Integer to Roman.
https://leetcode.com/problems/integer-to-roman/discuss/715614/Clean-easy-and-fast-Python-Solution
Eingereicht in Python anstelle von Python3.
Nachdem ich es gelöst habe, habe ich das Gefühl, irgendwie den Grund verstanden zu haben, warum es so viele Bads gibt ...
Das war's für diese Zeit. Danke für deine harte Arbeit.
Recommended Posts