
算法
文章平均质量分 64
Jane_96
谁说妹子不可以写代码的
展开
-
七种二分查找问题总结
今天刷LeetCode的时候,遇到了一道二分查找的题目。代码轮廓很容易就写出来了,但是,调边界条件却调了很久。原因还是因为自己对二分查找掌握的不够透彻。于是又查了一些资料,看了别人的一些博客,再次学习了二分查找~下面总结今天看的七种二分查找的类型,代码轮廓大致一样,大多是是判断条件不一样。注:以下讨论全是在不严格递增数组下实现的,例如,array[] = {1,2,2,3,3,4,4,5,6,...原创 2018-05-23 16:21:19 · 566 阅读 · 0 评论 -
最小生成树——kruskal算法和prim算法
1.最小生成树定义在一张带权的无向连通图中,各边权和最小的一颗生成树即为最小生成树。2.最小生成树的应用价值在现实生活中,很多布线问题,通线网络等问题,都可以直接或者间接的转化成最小生成树的问题去给出花费最小的方案。3.计算最小生成树的两种算法计算最小生成树可以采用两种方式,即Kruscarl算法和Prim算法。这两种算法都采用了贪心策略。 看过的一本书上解释说,这两...原创 2018-03-07 20:37:36 · 2910 阅读 · 0 评论 -
数据结构——图之基本概念
1.完全图图G = (V ,E)为节点集V和边集E组成的二元组,他描述了V中节点间的相互关系。由于每个节点的度不可能超过n - 1,因此边数|E|的上限为n∗(n−1)2n∗(n−1)2 \dfrac{n*(n - 1)}{2} ,即每个节点与其他节点间都有边相连。如果|E|达到上限,则称该图为完全图。2. 简单图没有自环和重边的图成为简单图,在该图中任意边的两端都不是同一个节点,...原创 2018-03-23 16:19:07 · 1425 阅读 · 0 评论 -
最短路径之Dijkstra算法
1.解决问题有向加权图的最短路径问题。2.算法条件该图所有边的权值非负,即对于每条边(u,v) ∈ E , w(u,v) ≥ 0。3.模拟算法运行过程Dijkstra算法中,主要采用了dis[N]数组,记录点到源点的最短距离,以及visit[N]数组,主要用来记录该点是否在集合中(代码中是根据visit[i] == true 或者 visit[i] == false...原创 2018-03-26 15:15:56 · 226 阅读 · 0 评论 -
前缀树TrieTree 操作详解(CPP版)
前缀树含义Trie树,即前缀树,又称单词查找树或字典树,是一种树形结构。该树典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。应用题目:给你100000个长度不超过10的单词。对于每一个单词,我们要判断他出没出现过,如果出现了,求第一次出现在第几个位置。在Trie树适用的状态下,很多情况同样可以使用hash树。但是Trie树用途更加的广泛,...原创 2019-07-14 17:13:39 · 505 阅读 · 0 评论 -
基础算法整理
排序欧几里得算法和扩展欧几里得算法基础博弈动态规划——背包问题快速幂并查集二分查找原创 2019-08-04 21:51:00 · 163 阅读 · 0 评论 -
并查集
并查集分为——合并和查询的过程。Description若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。 规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚。如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚也都是x的亲戚。Input第一行:三个整数n,m,p,(n<=5000,m<=5000,p&l...原创 2019-07-16 22:35:29 · 175 阅读 · 0 评论 -
快速幂
快速幂如果需要计算a^n(a的n次幂),一般都会一次累乘,算法复杂度为O(n);但是如果把an进行拆分,例如a7进行拆分得到,a^7 = a * (a^6) = a * (a3)2 = a * ((a * a^2 ))^2反过来看,我们知道了a,就知道了a^2 , 继而知道了a4,又能得到a8,这样会将计算的复杂度从O(n)降到O(log2n)快速幂普通版本C++版本:long lon...原创 2019-07-16 12:28:24 · 188 阅读 · 0 评论 -
归并排序(JS)
归并排序(从小到大)算法复杂度:最好情况:O(nlogn) 最坏情况:O(nlogn) 平均情况:O(nlogn) 空间复杂度:O(n) 稳定性:稳定function mergeSort(arr, start, end) { if (start >= end) { return; } let mid = start + parseInt(...原创 2019-03-25 19:10:49 · 13934 阅读 · 0 评论 -
背包问题
1.01背包问题描述 n个物品,每个物品的重量为wi和pi,且每种物品只有一个,现有一个背包,容量为W,往背包里面放物品,要是放的物品价值最大。题解对于每种物品来说,只有放与不放两种可能。dp[i][j] 表示当容量是j的时候,第i个物品放或者不放的情况下背包的最大价值。同时我们会发现dp[i]的数组只和dp[i-1]有关,所以,我们可以对普通的01背包进行优化,将d...原创 2018-03-30 20:47:34 · 201 阅读 · 0 评论 -
取球博弈
题目大意: 今盒里有n个小球,A、B两人轮流从盒中取球。 每个人都可以看到另一个人取了多少个,也可以看到盒中还剩下多少个。 两人都很聪明,不会做出错误的判断。 每个人从盒子中取出的球的数目必须是:1,3,7或者8个。 轮到某一方取球时不能弃权! A先取球,然后双方交替取球,直到取完。 被迫拿到最后一个球的一方为负方(输方) 编程确定出在双方都不判断...原创 2018-03-29 19:30:44 · 340 阅读 · 0 评论 -
欧几里得算法和扩展欧几里得算法
1.欧几里得算法//递归版本int gcd(int a ,int b){ return b == 0 ? a :gcd(b , a % b);}//非递归版本while(b != 0){ temp = a; a = b; b = t % a; }2.扩展欧几里得算法1.递归模板//递归版本模板int extgcd(in...原创 2018-03-29 16:23:49 · 1322 阅读 · 1 评论 -
常见排序算法总结和比较
排序算法比较 排序算法 平均时间复杂度 最好情况 最坏情况 空间复杂度 稳定性 冒泡排序 O(n2) O(n) O(n2) O(1) 稳定 选择排序 O(n2) O(n2) O(n2) O(1) 不稳定 插入排序 O(n2) O(n) O(n2) O(1) 稳定 希尔排序...原创 2018-03-22 16:31:28 · 329 阅读 · 0 评论 -
欧拉图——Euler Graph
1.欧拉图定义欧拉通路 我们从有向图和无向图中的任意一点出发,将所有的边遍历且仅遍历一遍的通路序列我们称为欧拉通路欧拉回路 如果欧拉通路的起点和终点是一样的,我们称之为欧拉回路欧拉图 具有欧拉回路的图称之为欧拉图,规定只有一个定点的空图(平凡图)属于欧拉图半欧拉图 具有欧拉通路的图我们称之为半欧拉图2.欧拉图应用例题:一笔画问题(南阳OJ42题)描述...原创 2018-03-03 20:35:11 · 3734 阅读 · 0 评论