![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法——Python实现
Fire_KAKA
这个作者很懒,什么都没留下…
展开
-
【算法——Python实现】滑动窗口解决数组问题
滑动窗口思路: 解决部分数组问题时,设置两个索引下标i,j,i为左边界,j为右边界,逐渐遍历整个数组,i和j组成的子数组形成长度变化的滑动窗口,直至i遍历完整个数组。应用一: Leetcode 209:Minimum Size Subarray Sum 给定一个整型数组和一个数字s,找到数组中最短的一个连续子数组,使得连续子数组的数字和sum>=s,返回这个最短的连续子数组的长度值class原创 2017-10-27 09:30:30 · 13493 阅读 · 0 评论 -
【算法——Python实现】快速排序的优化:三路快速排序及Leetcode题目应用
相比于普通的快速排序,优化点在于: 1.解决数组近乎有序的情况下算法复杂度会退化为O(n2)级别的问题 2.解决数组中有大量重复元素带来的复杂度退化问题import randomdef quicksort(arr, left, right): # 只有left < right 排序 if left < right: # pivot_index = partiti原创 2017-10-26 11:51:37 · 2449 阅读 · 0 评论 -
【算法——Python实现】有负权图求单源最短路径BellmanFord算法
class Edge(object): """边""" def __init__(self, a, b, weight): self.a = a # 第一个顶点 self.b = b # 第二个顶点 self.weight = weight # 权值 def v(self): return self.a de原创 2017-10-20 17:06:58 · 816 阅读 · 0 评论 -
【算法——Python实现】有权图求单源最短路径Dijkstra算法
class Edge(object): """边""" def __init__(self, a, b, weight): self.a = a # 第一个顶点 self.b = b # 第二个顶点 self.weight = weight # 权值 def v(self): return self.a de原创 2017-10-20 17:05:04 · 1921 阅读 · 0 评论 -
【算法——Python实现】有权图求最小生成树Kruskal算法
class Edge(object): """边""" def __init__(self, a, b, weight): self.a = a # 第一个顶点 self.b = b # 第二个顶点 self.weight = weight # 权值 def v(self): return self.a de原创 2017-10-20 17:03:02 · 1484 阅读 · 0 评论 -
【算法——Python实现】有权图求最小生成树Prim算法
class Edge(object): """边""" def __init__(self, a, b, weight): self.a = a # 第一个顶点 self.b = b # 第二个顶点 self.weight = weight # 权值 def v(self): return self.a de原创 2017-10-20 17:01:16 · 1638 阅读 · 0 评论 -
【算法——Python实现】有权图求最小生成树LazyPrim算法
class Edge(object): """边""" def __init__(self, a, b, weight): self.a = a # 第一个顶点 self.b = b # 第二个顶点 self.weight = weight # 权值 def v(self): return self.a de原创 2017-10-20 16:58:57 · 715 阅读 · 0 评论 -
【算法——Python实现】无权图(稠密图、稀疏图)及图的遍历
# _*_ encoding:utf-8 _*_"""图"""from random import randintimport timeimport copyimport Queueclass DenseGraph(object): """稠密图 - 邻接矩阵""" def __init__(self, n, directed): self.n = n原创 2017-10-20 16:54:38 · 1681 阅读 · 0 评论 -
【算法——Python实现】二叉搜索树
class Node(object): """节点""" def __init__(self, key, value): self.key = key self.value = value self.left = None self.right = Noneclass BinarySearchTree(object):原创 2017-10-20 16:46:00 · 448 阅读 · 0 评论 -
【算法——Python实现】并查集及优化
class UnionFind(object): """ Quick Find """ def __init__(self, n): # 传入列表的数量n,列表id初始化为每个元素代表一个组 self.count = n self.id = range(n) def find(self, p): #原创 2017-10-20 16:48:47 · 1765 阅读 · 0 评论 -
【算法——Python实现】最大堆和最小堆
# _*_ encoding:utf-8 _*_"""最大堆"""class MaxHeap(object): # def __init__(self): # self.data = [] # 创建堆 # self.count = len(self.data) # 元素数量 def __init__(self, arr): self.原创 2017-10-20 16:37:36 · 5986 阅读 · 2 评论 -
【算法——Python实现】最小索引堆,最小堆的优化
class IndexMinHeap(object): """ 最小反向索引堆,出堆不删除data,只删除indexs """ def __init__(self, n): self.capacity = n # 堆的最大容量 self.data = [-1 for _ in range(n)] # 创建堆 self.原创 2017-10-20 16:43:09 · 956 阅读 · 0 评论 -
【算法——Python实现】无权图建模通过广度优先遍历解决问题
有些问题并非图相关问题,但可以通过抽象为图,建立模型,运用广度优先遍历求得一点到另外一点的最短路径,来解决问题应用: Leetcode 279. Perfect Squares 给出一个正整数n,寻找最少的完全平方数,使他们的和为n 如 12 = 4+4+4, 13 = 9 + 4思路: 将从n到0的每个数字作为图中一个点,每两个数字之间如果相差一个完全平方数,则用一条边相连,如:原创 2017-11-21 11:57:31 · 550 阅读 · 0 评论