每周完成一个 ARTS:
Algorithm: 每周至少做一个 LeetCode 的算法题
Review: 阅读并点评至少一篇英文技术文章
Tips: 学习至少一个技术技巧
Share: 分享一篇有观点和思考的技术文章
罗马数字到整型数字 题目:13. Roman to Integer
难度:Easy
题意:
罗马数字包含以下七种字符: I
,V
,X
,L
,C
,D
和 M
。
字符 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
例如, 罗马数字 2 写做 II
,即为两个并列的 1。12 写做 XII
,即为 X
+ II
。27 写做 XXVII
, 即为 XX
+ V
+ II
。
通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII
,而是 IV
。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX
。这个特殊的规则只适用于以下六种情况:
I
可以放在 V
(5) 和 X
(10) 的左边,来表示 4 和 9。 X
可以放在 L
(50) 和 C
(100) 的左边,来表示 40 和 90。 C
可以放在 D
(500) 和 M
(1000) 的左边,来表示 400 和 900。
给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。
示例一:
Input: "III"
Output: 3
示例二:
Input: "IV"
Output: 4
示例三:
Input: "IX"
Output: 9
示例四:
Input: "LVIII"
Output: 58
Explanation: L = 50, V= 5, III = 3.
示例五:
Input: "MCMXCIV"
Output: 1994
Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.
解法:
说明,本题解法参考了 B 站 up 主「Michelle 小梦想家」的题解过程。
此题理解题意并找到几个最重要的关键点,即可快速写出算法:
代码:
class Solution(object):
def romanToInt(self, s):
"""
:type s: str
:rtype: int
"""
numeral_map = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
result = 0
for i in range(len(s)):
result += numeral_map[s[i]] - 2 * numeral_map[s[i-1]] if (i > 0 and numeral_map[s[i]] > numeral_map[s[i-1]]) else numeral_map[s[i]]
return result
时间复杂度 O(n),空间复杂度 O(1)。
Things you’re probably not using in Python 3 – but should
Python 3 是 Python 2 的全新升级版,有重大的改进。本文介绍 Python 3 到底增加了哪些功能。
简单罗列如下:
所有的代码都可以在作者的 GitHub 上找到。
将 Jupyter Notebook 转换为其他格式
本部分参考优达学城的 Jupyter 教程
Notebook 是 JSON 文件,所以可以很轻松地把它转换为其他格式以方便使用。
Jupyter 附带了一个名为 nbconvert
的实用程序,可将 notebook 转换为 HTML、Markdown、幻灯片等格式。
例如,要将 notebook 转换为 HTML 文件,请在终端中使用
jupyter nbconvert --to html notebook.ipynb
要将 notebook 与不使用 notebook 的其他人共享,转换为 HTML 很有用。而要在博客和其他接受 Markdown 格式化的文本编辑器中显示 notebook,Markdown 很合适。
另外,通过 notebook 创建幻灯片也是非常受欢迎的功能之一,你可以打开这个关于 Pandas 的示例。
在 notebook 中创建幻灯片的过程像平常一样,但需要指定作为幻灯片的单元格和单元格的幻灯片类型。在菜单栏中,点击“View”(视图)> “Cell Toolbar”(单元格工具栏)> “Slideshow”(幻灯片),以便在每个单元格上弹出幻灯片单元格菜单。
这会在每个单元格上显示一个下拉菜单,让你选择单元格在幻灯片中的显示方式。
Slides(幻灯片)是你从左向右移动的完整幻灯片。按向上或向下的箭头时,Sub-slides(子幻灯片)会出现在幻灯片中。Fragments(片段)最初是隐藏的,在你按下按钮时会出现。选择 Skip(忽略)会忽略幻灯片中的单元格,而选择 Notes(备注)会将为演讲者保留备注。
要通过 notebook 文件创建幻灯片,需要使用 nbconvert
:
jupyter nbconvert notebook.ipynb --to slides
这只是将 notebook 转换为幻灯片必需的文件,你需要向其提供 HTTP 服务器才能真正看到演示文稿。 要转换它并立即看到它,请使用
jupyter nbconvert notebook.ipynb --to slides --post serve
这会在浏览器中打开幻灯片,让你可以演示它。
分享几个我获取有价值信息的渠道
公众号:
RSS 订阅 & 网站:
邮件订阅: