每周学算法/读英文/知识点心得分享 2.18 - 2.22
每周一个 Algorithm,Review 一篇英文文章,总结一个工作中的技术 Tip,以及 Share 一个传递价值观的东西!
Algorithm: 学习算法
题目描述:
Roman numerals are represented by seven different symbols: I
, V
, X
, L
, C
, D
and M
.
Symbol Value I 1 V 5 X 10 L 50 C 100 D 500 M 1000
For example, two is written as II
in Roman numeral, just two one's added together. Twelve is written as, XII
, which is simply X
+ II
. The number twenty seven is written as XXVII
, which is XX
+ V
+ II
.
Roman numerals are usually written largest to smallest from left to right. However, the numeral for four is not IIII
. Instead, the number four is written as IV
. Because the one is before the five we subtract it making four. The same principle applies to the number nine, which is written as IX
. There are six instances where subtraction is used:
I
can be placed beforeV
(5) andX
(10) to make 4 and 9.X
can be placed beforeL
(50) andC
(100) to make 40 and 90.C
can be placed beforeD
(500) andM
(1000) to make 400 and 900.
Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999.
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.
解题过程:
个人认为是思路比较清晰的一道题,就是转换一种进制来表示数。
除开通用表示外,有六个数是用除法表示的。
编写代码时注意使用一个进制对照表,这样可以把进制转化的过程抽象成for循环,而不是许多个if判断。
解法:https://leetcode.com/submissions/detail/209466062/
Review: 学习英文
题目:Inversion of Control Containers and the Dependency Injection pattern
内容概述:马丁大叔剖析IoC容器背后的原理就是DI pattern,然后使用例子阐述了constructor injection, setter injection and interface injection,接着讲了Service Locator pattern,它和DI模式的目的都是为了解耦服务提供者和客户端,通过字符串映射服务名称。
Tips: 知识点
无
Share: 价值观
知识金字塔模型告诉我们,把一个知识点分享出来会理解更深刻。今天下午会分享Effective Java里关于重写hashCode的必要性这一点。