- 博客(10)
- 收藏
- 关注
原创 二分搜索
搜索非重复序列里的元素int left=0,right=nums.length()-1;//允许搜索到边界while(left<=right)//程序终止的条件为left>right,所以可以访问到所有元素{ mid=left+(right-left)/2; if(nums[mid]==target) return mid; else if(nums[mid]<target)//不符合条件,搜索[left,mid) left=mid+1; else if(nums[m
2021-04-09 13:04:14 106 1
原创 图论学习
图论常见的方法最短路径迪杰克斯拉算法Floyd算法SpfaBellman-ford最小生成树prim算法Kruskal算法拓扑排序最短路径迪杰克斯拉算法Floyd算法SpfaBellman-ford最小生成树prim算法Kruskal算法拓扑排序
2020-10-16 22:46:25 103
原创 打卡蓝桥杯
蓝桥杯历届试题总结数据结构基础知识数据结构基础知识二叉树二叉树的性质:1.完全二叉树和满二叉树满二叉树是一个完整的三角形,而完全二叉树是一个底部缺省的三角形。2.二叉树的第i层上最多有2^(i-1)个节点。3.深度为k的二叉树最多有2^k-1个节点4.对于一棵二叉树,若其叶子节点为n0,度为2的节点为n2,则n0=n2+1;一棵包含有2019个结点的二叉树,最多包含多少个叶结点?n0+n0-1=2019; n0=1010 无向连通图完全图:有 n(n-1)/2 条边的无向图。
2020-10-03 12:16:26 130
原创 DFS和BFS
dfs、bfs、动态规划的一点小唠叨蚂蚱序列计数蚂蚱有9只盘子,排成1个圆圈。其中8只盘子内装着8只蚱蜢,有一个是空盘。我们把这些蚱蜢顺时针编号为 1~8每只蚱蜢都可以跳到相邻的空盘中,也可以再用点力,越过一个相邻的蚱蜢跳到空盘中。请你计算一下,如果要使得蚱蜢们的队形改为按照逆时针排列,并且保持空盘的位置不变(也就是1-8换位,2-7换位,…),至少要经过多少次跳跃?求最少,常用搜索来确定需要记录的状态:目前八只蚂蚱的排位顺序,走过的步数变换状态:通过-2,-1,1,2对空位的位置进行
2020-09-27 16:27:52 87
原创 状态压缩规划
状态压缩动态规划怎么表示状态怎么变换状态例题怎么表示状态由于二进制的两种状态,可以用来描述开和关(1和0),故每个数字都可以用来表示一个特定的状态.怎么变换状态a[1]|a[2] 只要有一个为正,则为正a[1]&a[2] 两个都要为正,则为正a[1]^a[2] 两个不一样则为正,否则为负数3(11)+1(01)=4(100)例题【问题描述】糖果店的老板一共有 M 种口味的糖果出售。为了方便描述,我们将 M 种口味编号 1 ∼ M。小明希望能品尝到所有口味的糖果。遗憾的
2020-09-25 17:43:23 154
原创 我的算法提纲
算法排序选择排序插入排序快速排序搜索二分搜索宽度优先搜索深度优先搜索贪心算法递归算法动态规划背包问题01背包完全背包状态压缩动态规划集合并查集排序选择排序插入排序快速排序搜索二分搜索宽度优先搜索深度优先搜索贪心算法递归算法动态规划背包问题01背包完全背包状态压缩动态规划集合并查集...
2020-09-16 11:48:32 109
原创 快速乘幂模板
快速乘与快速幂模板快速乘法int fast_multiplication(int x,int y,int mod){ ll ans; while(y) { if(y&1)//判断y是否为奇数,若是奇数,则直接加上数字 ans+=x; y>>=1; x<<=1;}int fast_multiplication_with_mod(int x,int y,int mod){ ll ans; while(y) { if(y&1)
2020-09-15 17:16:48 69
原创 并查集
并查集的实现基本思路:压缩搜索????和归并在一起。int find(int k)//k为需要查找的子元素{ if(find(k)==k) return k; else return f[k]==find(f[k]);}int father[];for(int m=0;m<n;m++) father[m]=m;//一开始他都是自己的爹for(int m=0;m<n;m++){ father[fatherfind(m)]=fatherfind(m);//自己的爹成
2020-09-15 11:38:47 81
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人