Two sum
时间O(n)的方法:
- 用哈希表(字典)存之前的数和 索引
- 遍历数组O(n)
- 判断diff是否在字典中O(1)
空间上O(n),主要是字典的开销
reverse integer
难点:位数溢出 假设环境不能64位!只能在32位的限制内!
字符串解:耗内存
字符串翻转:reduce
数学解法:求余 推入
!! 难点:负数 不能直接整除和求模,得到的结果和正数不同! 且要注意溢出!每次算新的之前都要检查溢出
所以正数和负数要分别处理
Palindrome number
判断回文整数
字符串切片
字符串优化解法
- 121 奇数长度中间的那一个数 是不用管的
- 偶数长度则可以整除2
思路打开!
- 如果是负数,必然不是回文数字!
- 如果结尾是0,且自身不为0,不然不是回文
不用字符串!数学解法!!
- O ( l o g 10 n ) O(log_{10}n) O(log10n),每次迭代都除10 , 空间复杂度O(1)
- 如果回文,数字一定对称,所以只要看后一半时候和前一半一样!
Roman to Integer 罗马数转阿拉伯
- 注意保存类型,一一对应:字典
- 注意规则,罗马数字从左往右是由大到小,那么从右往左必须从小到大,如果中间出现更小的,必然是减法;最右一个必然是正数