Leetcode - "Roman to Integer" & "Integer to Roman"
来源:互联网 发布:黄岩司法淘宝拍卖网 编辑:程序博客网 时间:2024/04/29 12:21
话说周日去了一趟De Young,发现图片超过2M限制,懒得处理了,也就不PO图了。那时候在三藩市和UPENN的室友时候聚会,给他送了个Beats的红色骚耳机,希望他回国之后一切都顺利吧。今天早上看了Princeton的algorithm 2,这门coursera课真的超喜欢,甚至远超过machine learning那门课。
博主最近没有精神,估计是偶尔为工作发愁。
====================================================================
下午看了宇妹昨晚刷的两道题目,因为印象很深,而且题目不难,所以答案一下子就有:
#1:set matrix zero: 使用第一行和第一列来标记改行或者该列是不是该设置为0;[0][0]位置用来记录第一行或者第一列是否包含0元素。
#2:linkedlist cycle 2: fast runner & slow runner相遇,然后另外一个slow runner从开始点出发,slow runner从相遇点出发,两个相遇的地方就是重复点。
数学证明:假设直线段长度为M,环的长度为N,第一次相遇的地方在离环形接口x处,满足:M + K*N + x = 2*(M+x)。得到:M + x = K*N。所以另外一个slow runner走M的时候,前一个slow runner离交点(M + x)也就是K*N,因此刚好是回到交点。
算是“刷完”两题,然后去了一下健身房踩自行车,顺便学了一个小时的日语。
====================================================================
晚上做了一下roman to integer和integer to roman两道题目。
#1 roman to integer
罗马数字转换有三个准则:
#1:小数字在前是减法
#2:大数字在前是加法
#3:同一个数字不能出现超过三次
算法其实就按照前两个准则进行就可以了,记得把最后一个数字也加进来就好:
public class Solution { public int romanToInt(String s) { HashMap<Character, Integer> map = new HashMap<Character, Integer>(); map.put('M', 1000); map.put('D', 500); map.put('C', 100); map.put('L', 50); map.put('X', 10); map.put('V', 5); map.put('I', 1); int num = 0; char[] c = s.toCharArray(); for (int i = 0; i < s.length() - 1; i++) { if (map.get(c[i]) >= map.get(c[i+1])) num += map.get(c[i]); else num -= map.get(c[i]); } num += map.get(c[s.length()-1]); return num; }}
====================================================================
#2 Integer to Roman
数学上的是按照radix的方式去处理这种题目的,radix的定义是:一个进制里面的不同的digit。
比如十进制不同的数字有0,1,2,3,4,5,6,7,8,9
而二进制的不同数字有0,1
把一个数按照该进制表示就是先求商,再求余。
在int to roman这道题目中,认为radix有以下:
{1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}
对应的字符是:
{"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
public class Solution { public String intToRoman(int num) { // two arrays int[] radix = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; String[] symbol = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; String s = ""; for (int i = 0; i < radix.length; i++) { int count = num / radix[i]; num %= radix[i]; for (int j = 0; j < count; j++) { s += symbol[i]; } } return s; }}
- LeetCode Roman to Integer && Integer to Roman
- 【leetcode】Roman to Integer | Integer to Roman
- Leetcode - "Roman to Integer" & "Integer to Roman"
- LeetCode:Roman to Integer,Integer to Roman
- LeetCode Integer to Roman & Roman to Integer
- leetcode - roman to integer & integer to roman
- LeetCode:Roman to Integer
- LeetCode: Integer to Roman
- LeetCode: Roman to Integer
- LeetCode Integer to Roman
- LeetCode: Integer to Roman
- LeetCode : Roman to Integer
- [Leetcode] Roman to Integer
- [Leetcode] Integer to Roman
- Leetcode: Integer to Roman
- Leetcode: Roman to Integer
- LeetCode Integer to Roman
- 【leetcode】Roman to Integer
- Qt网络获取本机网络信息
- 采用eclipse + gdb来搭建调试qemu源码的环境
- [Android 性能优化系列]布局篇之减少你的界面层级
- hdu 4712 随机算法
- Linux sed Commands
- Leetcode - "Roman to Integer" & "Integer to Roman"
- 一个关于css中margin-right没有效果的问题
- 解决微信支付获取prepay_id时,商品描述body为中文时报签名错误的问题
- oc 定义静态变量
- 解析Cocos2d-x中的Ref内存管理
- andriod--Resources相关
- centOS6.3 64位SVN服务器搭建&win7 32位svn客户端连接
- iOS第三方开源库的吐槽和备忘
- iOS开发-数据加密算法AES