- 博客(8)
- 收藏
- 关注
原创 Python寻找n以内所有质数
面试官让优化时间复杂度,我就改成了2~(i//2),复杂度还是二次方。再让改进,就打算用集合来优化,但是一时紧张脑子罢工,没想到可行的方式。后来在网上找到2~int(i**0.5)的设定,恍然大悟,复杂度减小到O(方法一用时9.399755001068115s,方法二用时6.082657814025879s,时间之比甚至大于。但是我觉得我用集合肯定更快,可以达到O(n)的复杂度。今天面试让写100以内所有质数,我用2~i-1的数对i取余判断i是否为质数。我很满意,但是面试官不知道啊(哭。
2024-09-03 23:55:08 238 1
原创 python二分查找特定区间
之前写二分查找特定值觉得很简单,所以今天面试官让我写个二分查找区间的算法,时间复杂度0(logn)时,我想这还不简单。结果写了十五分钟,盯着又臭又长的代码还在那里纠结边界条件。回头上网查找没有找到满意的文章,于是自己又尝试了一下。但是代码还是太长,如果大家有看到更好的解法,还请踢我一下!
2024-08-27 23:05:15 132
原创 Google Chrome因版本更新错误打不开(简单免费的解决方法
几个月前打开老电脑的时候,发现Google Chrome打不开了,提示了类似图一的报错。今天又有一位朋友向我吐槽,网上找到的花钱的方法没解决问题,我分享的这个免费简单的方法反而解决了。那个所谓的知乎里修改两个版本文件夹的链接在这里:Chrome浏览器无法启动,因为应用程序的并行配置不正确 - Deczlin的文章 - 知乎https://zhuanlan.zhihu.com/p/74521887。
2024-08-02 23:11:06 574
原创 O(1)增删单向链表实现LRU思路
第二种思路是字典的key存x节点的值,key对应的value则存x的子节点y。但这样就需要加一个虚拟头节点以获取真实的头节点,并且在增删节点的时候有些复杂。这其实是借助字典变相实现双链表。昨天下午面试,被问到如何用单向列表实现O(1)增删。当时没想出来,事后想起自己曾见过将链表节点存入字典的操作。字典的查询不就是O(1)嘛。第三种方法是在网上找到的,思路比较新奇——直接修改节点的值,相较而言也更简单。一种思路是改成双向链表实现。但怎么通过这种方式对链表进行增删呢?
2024-08-02 10:07:24 219
原创 Dijkstra算法属于贪心算法还是动态规划?
可参考上图第二行前两张图,在前一个子问题我们找到z节点是距离s的最近节点,按照动态规划的逻辑,我们可以在此子问题最优解的基础上找到到节点x的最短路径。然而下一问题的解则抛弃了z节点转向了t节点,最后证明s->y->t->x才是最短路径。假如我们改成以求解最短路径末尾的上一节点为子问题,则面临根本无法求解子问题的情况,因为我们无法预先知道哪个节点距离源节点s是最近的。Dijkstra算法属于贪心算法,以下根据个人理解进行分析,如有理解不当之处,还请不吝赐教!
2024-07-31 21:58:38 286
原创 python key = lambda x: fun(x) 用法速览
对于sort()函数,sort(matrix, key = lambda x: x[1])是对matrix每行,以此行第二列为排序依据,对matrix各行重新排序。key = lambda x: fun(x)则是常用的函数参数表达式。如果不经常用这种表达式,容易对其用法产生困惑。lambda匿名函数用法为 lambda parameter1, parameter2, parameter3: expression。对于max(), min()函数,我们可以找出一个矩阵第m列最大的那一行。
2024-07-27 21:45:55 202
原创 python快速排序
虽然进行了删减,但还是显得有点冗长。后来在菜鸟上看到另一种写法,直接对列表本身进行修改而不返回列表。于是我打算在方法一的基础上直接修改,但是返回的结果只进行了一次排序,即 [1, 2, 0, 3, 6, 7, 4, 9]。后来通过print函数发现排序是正常进行的,但为什么结果只排了一次呢?对比网上写法,我发现用此方法递归传参的时候必须仍用‘n'而不能另外传个新的列表’n[x:y]'。最近用python写了一个快排,然后上网参考大佬们都是怎么写的,发现两种写法:一种返回排好的列表,一种直接对列表进行修改。
2024-06-29 22:40:30 196
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人