LeetCode算法题——Roman to Integer
来源:互联网 发布:学校网络下载不了 编辑:程序博客网 时间:2024/05/29 14:32
题目概述
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
分析
解决此题,需要先明确罗马数字计数法:
- 常见字母对应的十进制表示
I = 1; V = 5; X = 10; L = 50; C = 100; D = 500; M = 1000
- 对应十进制数小的字母写在对应十进制数大的字母右侧,代表着相加,例如
VIII = 5+1+1+1 = 8
; 相反如果数字小的字母写在左侧则代表着相减,例如IV = 5-1 = 4
- 相同的字母不能连续出现3次以上
明白了基本计数法以后,由于题目限定了输入整数的范围(1-3999),因此思考可以使用列表的方法,先将基本的几个计数单位列出来,之后使用贪心算法,不断比较当前输入整数的值最大可以匹配哪一个单位,输出一个罗马字符。
string intToRoman(int num) { string ans = ""; int aArray[] = {1000,900,500,400,100,90,50,40,10,9,5,4,1}; string sArray[] = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; for (int i = 0; i < 13; i++){ while (num >= aArray[i]) { ans += sArray[i]; num -= aArray[i]; } } return ans; }
算法的时间复杂度和空间复杂度均为O(1)。
总结
- 使用贪心算法总是匹配当前最大能匹配到的字母
- 在参数相对不是很大的时候,可以考虑将计数单位列举出来,这将极大提升算法的速度
阅读全文
0 0
- LeetCode算法题——12. Integer to Roman
- LeetCode算法题——13. Roman to Integer
- LeetCode算法题——Roman to Integer
- leetcode— Integer to Roman
- LeetCode算法题之Roman to Integer
- 【python】【leetcode】【算法题目12—Integer to Roman】
- 【LeetCode】LeetCode——第12题:Integer to Roman
- 【LeetCode】LeetCode——第13题:Roman to Integer
- LeetCode——Integer to Roman
- LeetCode——Integer to Roman
- LeetCode——Roman to Integer
- leetcode 012 —— Integer to Roman
- leetcode 013 —— Roman to Integer
- LeetCode题解——Roman to Integer
- LeetCode题解——Integer to Roman
- #12 LeetCode——Integer to Roman
- #13 LeetCode——Roman to Integer
- leetcode第12题——**Integer to Roman
- 网站建设时需要避免这些心理
- 【总结】】maven错误及解决,持续更新~
- jQuery UI 实例
- 利用HorizontalScrollView自己写一个viewPager指示器
- 技术文章 | Python和Ruby两大语言全方位对比
- LeetCode算法题——Roman to Integer
- 文件系统---代码层次深入分析文件系统
- C#中数组作为参数传递的问题
- oracle中同义词(私有,公有),分区表(范围,间隔)
- Coursera吴恩达《神经网络与深度学习》课程笔记(4)-- 浅层神经网络
- EasyNVR RTSP转HLS(m3u8+ts)流媒体服务器前端构建之:bootstrap-datepicker日历插件的实时动态展现
- Spark之 shuffle 操作详解
- 深入了解 gRPC:协议
- VNC 黑屏