![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
我的暑假作业没写完
如有问题请邮件联系:936060735@qq.com
展开
-
python实现字符串模式匹配KMP算法
讲在前面的话,KMP算法是字符串中匹配的快速算法,时间复杂度为O(m+n) 。KMP算法的核心思想主要通过分析前面字符串的信息的来滑动匹配字符串,避免当不匹配时像传统匹配算法回溯到匹配字符串的开头,而当不匹配时如何滑动这个问题就是由next[j]数组来决定,而求next[j]数组的核心思想就是将匹配字符串互相错开一个位置来计算。关于具体理论和图解部分请参考reference。1....原创 2019-04-06 22:02:43 · 564 阅读 · 0 评论 -
Python实现四大经典查找算法
本文主要实现查找算法中的二分查找算法,顺序查找,插入查找算法以及fibonacci查找算法,个人认为以上查找算法本质的不同其实就是缩小的区间方式不一样罢了。二分查找算法采用二分缩小区间的方法;顺序查找算法每次缩小一个单位区间;而插入查找算法则通过数据的分布特征来重新计算区间:,就是二分查找的升级版本;最后的fibonacci查找算法的缩小区间的方法则是通过fibonacci数列来确定。同样...原创 2019-04-06 22:39:13 · 2526 阅读 · 0 评论 -
Python实现图的经典DFS、BFS、Dijkstra、Floyd、Prim、Kruskal算法
讲在前面的话,图的算法太多,理论知识肯定一篇博客讲不完,关于理论知识大家可以参考教材Sedgewick的《算法》或reference的链接,本文主要还是想在一篇博客中记录六种算法的Python代码。同样想吐槽一下,虽然网上博客很多,但是并不代表他们的代码都是正确的,还是要看经典教材啊,教材这么多人在用,所以出现错的概率会低一些。在这讲一下自己对这些算法的核心思想的一些个人理解,很多东...原创 2019-04-07 14:29:13 · 1081 阅读 · 0 评论 -
python实现剑指offer中的替换空格(in-place)
讲在前面的话,网上关于这道题的Python解法很多,但是大多是都是重新创建一个list,本文旨在在使用一个技巧list的extend方法来在原来的list上扩展, 这样的话就不用再开一个list了。1.题目描述:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。2.show me...原创 2019-04-09 18:49:26 · 320 阅读 · 0 评论 -
python实现二维列表(list)的旋转、反转
讲在前面的话,在leetcode刷到一道in-place的旋转图像的题,同时在想如果不原位旋转的话,肯定有其他简单的方法的,答案是肯定的。顺便写篇博客来记录一下Python中的反转list的方法。1.Python中反转list的几种简单方法1.1 使用reversed()的函数,它是一个生成器,返回一个对象nums = [1,2,3,4,5]reversed_nums = list...原创 2019-04-15 12:15:28 · 9485 阅读 · 0 评论 -
python实现次数排序并且保持出现顺序不变
问题背景: 有一个列表数据,现在要按照出现次数最多的来降频排序,并且当次数相同时保持数据出场的顺序不变。 如果使用C++需要采用优先队列和字典计数,但想着python应该不需要这么复杂吧。#待数据 :data = [7, 3, 3, 3, 5, 5, 5, 5, 6, 6, 6, 1]#目标数据:ans = [5, 5, 5, 5, 3, 3, 3, 6, 6, 6, 7...原创 2019-06-27 20:51:23 · 1559 阅读 · 0 评论