var (
values = []int{1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}
)
func intToRoman(num int) string {
res := ""
for _, value := range values {
for num >= value {
num -= value
switch value {
case 1000:
res += "M"
case 900:
res += "CM"
case 500:
res += "D"
case 400:
res += "CD"
case 100:
res += "C"
case 90:
res += "XC"
case 50:
res += "L"
case 40:
res += "XL"
case 10:
res += "X"
case 9:
res += "IX"
case 5:
res += "V"
case 4:
res += "IV"
case 1:
res += "I"
}
}
if num == 0 {
break
}
}
return res
}
复杂度分析一
时间复杂度: 对 values 进行了一次遍历,又在其中对 num 进行了循环处理,时间复杂度为 O(n2)