(337)给个N长度的数字字符串,每次只允许相临左右替换一次,请问怎么样最少替换字数,让整个字符串变成有序的。
(338)了解什么数据结构,知道 B+ 树吗(火山引擎前端一面)
(340)n 颗节点的有多少种形态
emmm,题目读的有点迷,不过只要注意到新加一个边和使得 s s s到 t t t的距离不减少(!!神奇的的要求),并且要求新加边的两个点直接之前不能有直达的边,这题就差不多读懂了
题目大意:给你一个图,n个点,m条边,起点和终点 s , t s,t s,t,然后你需要新加一条边在两个点之间,现在问你有多少种加法使得 d i s t ( s , t ) dist(s,t)
看题目数据范围,比较小,那么我们可以直接枚举在那两个点之间建边,如果对于点 i , j i,j i,j建边了,若导致了最短路缩减,也就是 d i s ( s , i ) + d i s ( j , t ) i , j i,j i,j哪个点离哪个端点最近,所以要判断两次。
如果不减少的话也就是大于等于了,那么我们跑两次最短路就好了,一个对起点跑,一个对终点跑。然后枚举判断一下就好了。对于这种小数据,邻接矩阵他不香吗QAQ。
朴素算法理解简单,但两个串都有依次遍历,时间复杂度为O(n*m),效率不高。由此有了KMP算法。
一般的,在一次匹配中,我们是不知道主串的内容的,而模式串是我们自己定义的。
朴素算法中,P的第j位失配,默认的把P串后移一位。
但在前一轮的比较中,我们已经知道了P的前(j-1)位与S中间对应的某(j-1)个元素已经匹配成功了。这就意味着,在一轮的尝试匹配中,我们get到了主串的部分内容,我们能否利用这些内容,让P多移几位(我认为这就是KMP算法最根本的东西),减少遍历的趟数呢?
二叉树(Binary Tree)是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树), 或者由一个根节点和两棵互不相交的,分别称为根节点的左子树和右子树的二叉树组成
图(Graph)是由顶点的有穷非空集合和顶点之间的边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。
用一个有向图表示一个工程的各子工程及其相互制约的关系,以弧表示活动,以顶点表示活动的开始或结束时间,称这种有向图为边表示活动的网,简称AOE网.
把工程计划表示为边表示的活动的网络, 即AOE网, 用顶点表示事件, 弧表示活动, 弧的权表示活动持续时间
事件表示在他之前的活动已经完成, 在他之后的活动可以开始
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。