![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
xiang_yu_pai
这个作者很懒,什么都没留下…
展开
-
最小生成树【kruskal、prim】
例题: AcWing 859、kruskal1、kruskal思想:将边从小到大排序,每次判断这条边的两个节点是否已经联通,如果没有联通的话就把这条边加入。import java.util.*;public class Main{ static int par[]; static int find(int x){ int root=x; //找到x的祖父节点【最上面的节点】 while(root!=par[root]) root=pa原创 2022-05-19 17:27:22 · 94 阅读 · 0 评论 -
最短路径算法【dijkstra、floyd、bellmen-ford、spfa】
1、dijkstradijkstra处理不了负权图。因为如果源点到终点距离比较短,但是有另外一条距离(一开始距离较长)由于有负权路,导致最后到终点距离反而更短,从而导致错误。如 A->C【5】 A->B【6】->C【-2】,会先选择A->C的路径,但是实际最短路是A->B->C。...原创 2022-05-18 17:45:42 · 111 阅读 · 0 评论 -
数组里三个数出现一次,其它数出现两次,找出这三个数
数组里三个数出现一次,其它数出现两次,找出这三个数目的:把二进制n的最后一位找出来。求出三个数的异或得X,X^a , X^b, X^c都不为0,。设一个函数f(n)表示保留二进制n的最后一位1,其它位置0f(X^a) ^ f(X^b) ^ f(X^c)至少有一位为1,假如最后一位为1的m位。那么 X^a , X^b, X^c中第m位的至少有1个或3个。但是不可能为3个。反证法:X^a , X^b, X^c都不为0,则a,b,c在第m位都相同,x与a,b,c相反。若a为0,则x=a ^ b ^原创 2021-09-25 17:04:24 · 360 阅读 · 0 评论 -
吃葡萄(牛客)
吃葡萄有三种葡萄,每种分别有a,b,c颗。有三个人,第一个人只吃第1,2种葡萄,第二个人只吃第2,3种葡萄,第三个人只吃第1,3种葡萄。适当安排三个人使得吃完所有的葡萄,并且且三个人中吃的最多的那个人吃得尽量少。对于每组数据,输出一行一个数字表示三个人中吃的最多的那个人吃的数量。想要吃的最多的人吃的最少,就要想办法平分,使得每个人吃的数量差不多。这里我们可以把三种葡萄看做三条线段,每一种的颗数看成每条线段的长度,这样三条线段就可以组成几何图形,我们想要的就是平分这个几何图形的周长。线段a,b,c原创 2021-08-10 11:39:48 · 369 阅读 · 0 评论 -
743. 网络延迟时间(Dijkstra算法)
Dijkstra算法public int networkDelayTime(int[][] times, int n, int k) { int max=Integer.MAX_VALUE/2; int[][] g=new int[n][n]; for(int i=0;i<n;i++) Arrays.fill(g[i],max); int[] dist=new int[n]; Arrays.fi原创 2021-08-02 22:58:50 · 141 阅读 · 0 评论 -
剑指 Offer 19. 正则表达式匹配
请实现一个函数用来匹配包含’. ‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但与"aa.a"和"ab*a"均不匹配。s串和p串比较是否匹配,可以通过逐次比较每个字符是否相等,因此可以通过动态规划记录比较的结果。动态规划设f[n][m]为S的前n个字符和P的前m个字符的匹配结果字符串Sn的长度为n,字符串Pm的长度为m1、如果pm-原创 2021-07-31 10:48:52 · 51 阅读 · 0 评论