随笔分类 - 算法
摘要:并查集是一种用途广泛的数据结构,能够快速地处理集合的合并和查询问题,并且实现起来非常方便,在很多场合中都有着非常巧妙的应用,。本文首先介绍并查集的定义、原理及具体实现,然后以其在最小生成树算法中的一个经典应用为例讲解其具体使用方法。一 并查集原理及实现并查集是一种树型的数据结构,用于处理一些不相交集...
阅读全文
摘要:栈模拟非递归算法递归算法的本质是利用函数的调用栈进行,实际上我们可以自行使用栈来进行模拟,这样的算法空间复杂度为O(h),h为二叉树的高度。前序遍历首先把根节点入栈,然后在每次循环中执行以下操作:此时栈顶元素即为当前的根节点,弹出并打印当前的根节点。把当前根节点的右儿子和左儿子分别入栈(注意是右儿子...
阅读全文
摘要:1 # coding:utf-8 2 3 import random 4 import time 5 6 t = time.time() 7 8 # 快速排序的分割算法, 参考自编程珠玑 9 # [l, r]为闭区间10 def partion(a, l, r):11 # tmp =...
阅读全文
摘要:# 堆排序的Python实现# coding:utf-8import randomimport timet = time.time()# 堆排序, 按照从小到大排序,所以建立大根堆# 列表的第一个元素没有使用def ShiftDown(a, i): if not a: retur...
阅读全文
摘要:1. KMP算法是前缀匹配算法,一次从前往后匹配的过程中,根据已经部分匹配的信息,在文本中,移动尽可能远的距离。而不是按照朴素模式匹配方法,每次都只移动一个位置。比如这个示例,在文本串中从4(从0开始编号)开始逐个字符匹配,直到某个不匹配的字符(空格和D),然后朴素模式匹配算法是从下一个字符继续开始...
阅读全文
摘要:本来这只是一个普通的算法题,但是当初自己OJ上提交时,总是提交失败,而我自己认定程序逻辑没有任何问题。然后开始就在本机上调试,结果发现这是由于Python的对象机制而引发的。所以先把问题算法题贴出来,然后通过该问题,详述Python的对象机制!题目描述:输入一颗二叉树和一个整数,打印出二叉树中结点值...
阅读全文
摘要:自己在2014年12月面试某公司时被问过该问题。虽然当时,自己写出来了自认为效率比较高的算法,但是没有能按照面试官的要求,进行进一步的优化。后来网上搜索该问题,结果引申了一串其他的知识点,看来还是得深究啊!解法一:暴力法这种方法就不用多说了吧。这里我给出暴力法中,最优化的方案。# coding:ut...
阅读全文

浙公网安备 33010602011771号