第二十四天:力扣第12题,整数转罗马数字
地址:leetcode-cn.com/problems/in…
思路:我这个思路可以称之为傻瓜式贪心算法,看了就懂了。
var intToRoman = function(num) {
let thousand = ['','M','MM','MMM'];
let hundred = ['','C','CC','CCC','CD','D','DC','DCC','DCCC','CM'];
let ten = ['','X','XX','XXX','XL','L','LX','LXX','LXXX','XC'];
let one = ['','I','II','III','IV','V','VI','VII','VIII','IX'];
return thousand[Math.floor(num/1000)]+hundred[Math.floor(num%1000/100)]+ten[Math.floor(num%1000%100/10)]+one[Math.floor(num%1000%100%10)];
};
感觉好傻,但是确实猛。
执行用时:152 ms, 在所有 JavaScript 提交中击败了91.75%的用户
内存消耗:44 MB, 在所有 JavaScript 提交中击败了21.94%的用户
找了找其他大佬代码,有一个还不错:
var intToRoman = function(num) {
let nums=[1000,900,500,400,100,90,50,40,10,9,5,4,1],
chars=['M','CM','D','CD','C','XC','L','XL','X','IX','V','IV','I'];
let result='';
while(num){
if(num>=nums[0]){
result+=chars[0];
num-=nums[0];
}else{
nums.shift();
chars.shift();
}
}
return result;
};
这个只与第一项对比相加挺不错的。