python算法题_Python 算法题总结(1-10)

想着总结一下做过的题目,感觉我之前的学习也没有那么认真......果然兴趣是最好老师。

也可以照着这里的提示不看他人代码,自己做题试试。

收获里写的是目前获得的一些小感悟,也许还有其他用法暂时就没写了。4aa545dccf7de8d4a93c2b2b8e3265ac0a26d216.png

题目1:两数之和

解法: 暴力解法就不说了,要想运行的快得加入字典。

收获:

index :获取指定值的索引,如果有重复的就是第一个

enumerate:获得列表里值的索引及位置

get:根据值获得字典里该键对应的值

哈希表的做法和先for循环创建字典本质上区别不大,但是应该会快一点。

写到这里的时候,我发现自己目前做的题目也可以用get简化,收获不小~~4adb9255ada5b97061e610b682b8636764fe50ed.png

题目2:整数反转

解法: 思路一般是传统的取余再移位,也可以转换成字符串[::-1]逆序输出。

收获:

常规操作,直接得到逆序后的数字:

temp = 0

while x != 0:

temp = temp*10 + x%10

x = int(x/10)

[::-1]:字符串逆序

abs():取绝对值4adb9255ada5b97061e610b682b8636764fe50ed.png

题目3:回文数

解法: 根据规则可以率先排除负数,之后我是按照字符串逆序前后是否相等做的。

看了进阶要求后用上文那个小循环改了一下

收获:

用逆序前后是否相等判断回文4adb9255ada5b97061e610b682b8636764fe50ed.png

解法: 原思路是把六种单独情况列出,之后发现可以通过对应值来判断是否加上还是减去。

收获:

做这道题的时候感觉自己很聪明,知道啥时候前进一步啥时候前进两步。

后面看了大神用字典,根据键对应的值来寻找规律,真的跪了。4adb9255ada5b97061e610b682b8636764fe50ed.png

解法:可以傻瓜式做法也能利用min和max函数排序后计算

收获:

这里需要考虑的情况很多,千万不能盲目开始

min和max函数:这个比较神奇,马上把我们要处理的列表里的字符串缩减成两个4adb9255ada5b97061e610b682b8636764fe50ed.png

解法: 利用replace函数一层层剥开、利用堆栈

收获:

今天回顾的时候发现:s_new =s.replace('()', '').replace('[]', '').replace('{}', '')

这句代码运行:{[()]} 这种符号时一步就能转换成空字符串,

运行([{}])的时候一步转换成([])还是有一个顺序区别的

利用在堆栈底部放入元素可以很方便地判断是否发生错误4adb9255ada5b97061e610b682b8636764fe50ed.png

解法:最关键的是原地修改,用双指针法把后面和它不相等的元素一个个提到前面来。

收获:

用set可以去重,双指针法4adb9255ada5b97061e610b682b8636764fe50ed.png

题目8:移除元素

解法: 原地修改,还是利用双指针法。

收获:

for循环里的if,当我们找到满足我们目标的值的时候再进行操作,紧盯目标。4adb9255ada5b97061e610b682b8636764fe50ed.png

解法: 用Python可以直接判断给出的字符串是否在被搜索的字符串中。

收获:

Python直接判断字符串的存在可以直接用index函数返回第一个出现该字符串的位置索引4adb9255ada5b97061e610b682b8636764fe50ed.png

解法: 循环遍历或者二分法

收获:

对边界的处理

取中点的方式:mid = int(left + (right-left)/2) 比较保险4aa545dccf7de8d4a93c2b2b8e3265ac0a26d216.png

db75225feabec8d8b64ee7d3c7165cd639554cbc.png

之后会10天一总结,总结和做题重要性不相上下。之前上学的时候也不重视这一块,吃了不少亏吧,吃一堑长一智,关键还是坚持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值