LeetCode日常打卡11~15
11. 盛最多水的容器
分析:比较简单的一道题,面积问题,宽高都很容易理解。暴力法会超时。使用双指针即可。
扩展思考,这道题感觉没什么好挖掘的。变化顶多是坐标尺变换一下。判断时注意一下就好。
1 | class Solution: |
12. 整数转罗马数字
分析:实现不难。不过,看到优秀解答。忍不住拷贝下来。发散思路真的很重要。
参考luohaha
方法1:第一种方法,依次取出个十百千位,然后转为字符串
1 | class Solution: |
第二种方法,题目范围位1-3999,用字典保存个十百千位上可能出现的所有罗马数字,依次取出千百个十位,在字典中找到数字对应的罗马数字即可
1 | class Solution: |
第三种解法,将数字依次递减,直到减为0,将减去的数字替换为罗马数字即可
1 | class Solution: |
13. 罗马数字转整数
分析:相比上一道题差不多。巧妙一处在于如何处理,满减情况。
1 | class Solution: |
14. 最长公共前缀
分析:本以为只是一道简单的题,发掘出不错方法。学到了。
方法一: 利用python的max()和min(),在Python里字符串是可以比较的,按照ascII值排,举例abb, aba,abac,最大为abb,最小为aba。所以只需要比较最大最小的公共前缀就是整个数组的公共前缀 。
1 | class Solution: |
2、利用python的zip函数,把str看成list然后把输入看成二维数组,左对齐纵向压缩,然后把每项利用集合去重,之后遍历list中找到元素长度大于1之前的就是公共前缀
1 | class Solution: |
15. 三数之和
分析:先排序,建立列表。建立三数之和,然后判断。注意如果相等,需要往中间逼近。逼近同时注意去掉数字相同情况,减少运算复杂度。
1 | class Solution: |