vuex基本使用
vue的状态管理插件vuex,搭配vue进行开发使用,学习整理的学习笔记,更详细内容参看官方文档。
vue-router详解
vue的官方router,搭配vue进行开发使用,学习整理的学习笔记,更详细内容参看官方文档。
SSM框架整合Demo
对spring、sprintMVC以及mybatis框架的整合使用,以的方式记录。
webpack基础知识
关于webpack的基本使用,使得易于理解Vue中使用的cli
高精度问题
高精度算法,涉及高精度的加减乘除运算。
最短路径问题
记录一下学最短路径的相关算法时的理解和代码模板与应用,dijkstra,BF,spfa,Floyd等
背包九讲学习笔记
本文主要内容来自网上流传的背包九讲,非常的经典,现以在github上开源,记录一下个人学习笔记和理解。
0 / 1背包
实现代码:
12345678int cost[N];//存每个物品的花费int w[N];//存每个物品的价值int dp[N][N];//dp[i][j]存储容量为j,且只考虑前i个物品时,能取得的最大价值for(int i=1;i<=n;i++) for(int j=1;j<=v;j++) //j>cost[i]表示物品i可放入容量为j的背包中 if(j>cost[i])dp[i][j]=max(dp[i-1] ...
并查集详解
1.并查集基础知识
并查集是一种树形结构,每个元素都存储在树中的一个结点里
不同的树代表不同的集合,以根结点为标识
当两个结点的根结点相同,就称这两个结点属于同一个集合,他们拥有一个共同的祖先结点。
当两个结点的根结点不同,就称这两个结点不属于同一个集合,即位于不同的树结构中。
查询一个结点所属的集合(即该结点的根结点),称之为Find,即查操作
把两个不同集合(即不同的树),合并到一个集合中,称之为Union,即并操作
2.并查集建树思想初始化每个元素都是一个集合,都是树中的根结点,不同的集合可以根据需要进行合并,并查集解决的问题就是判断某个元素属于哪个集合,以及把不同集合中的结点合并 ...
快速幂和矩阵快速幂
1.知识储备快速幂原理当b为偶数时,a ^ b = (a ^ (b/2) ) * (a ^ (b/2) )
当b为奇数时,a ^ b = (a ^ (b/2) ) * (a ^ (b/2) ) * a
这个不难理解,举个例子
3 ^ 6 = (3 ^ 3 ) * (3 ^ 3) 此时b=6为偶数
3 ^ 5 = (3 ^ 2 ) * (3 ^ 2) * 3 此时b=5为奇数
根据这两个等式,当我们在算a ^ b时可以先算出 a ^ (b / 2),然后再求a ^ b,减少了重复的b / 2次计算,因此时间复杂度是O(log N)
模运算法则之一a # b % c = ( a % ...
实现全排列的两种方式:交换递归和字典序
知识储备
全排列:从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。
字典序:在数学中,字典或词典顺序(也称为词汇顺序,字典顺序,字母顺序或词典顺序)是基于字母顺序排列的单词按字母顺序排列的方法。
简单的来说就是:abc>abd 以及123>132 (这里的>是指字典序靠前)
最直观的想法,直接递归枚举算法思想:
用一个数组ans来存储生成的排列,并在递归出口结束时输出。假设生成0,1,2三个数字组成的全排列,首先考虑第一位,第一位可能放置0到2中的一个,就有3种情况,然后后面 ...