算法

什么是字节顺序?

一、什么是字节顺序?字节顺序,是指数据在内存中的存放顺序。举例说明什么是字节顺序使用16进制表示两个数:0x12345678和0x11223344。在内存中有两种方法存储这两个数字,分别为:从上图看,两种方案虽有不同,但也有共识,即依次存储每一个数字,

悬线法实例讲解

先说说什么是悬线?就是一条竖线,这条竖线有初始位置和高度两个性质,可以在其上端点不超过当前位置的矩形高度的情况下左右移动。一、概述悬线法的适用范围是单调栈的子集。具体来说,悬线法可以应用于满足以下条件的题目:(1)需要在扫描序列时维护单调的信息;(2)可以使用单调栈解决;(3)不需要在单调栈上二分。

简述随机化算法

本篇将主要讲解随机化算法,在正式进入主题之前,我们先谈谈什么是随机化?随机化是一种可能影响试验结果的无关或可能在试验过程中变化,从而影响到最终结果。随机化算法,是在算法中使用了随机函数,且随机函数的返回值直接或间接的影响了算法的执行流程或结果。

浅谈分数规划

说到分数规划,其实这只是一个用来转换问题模型的一个套路,并没有固定的模板什么的,下面我们看看分数规划的形式和特性。分数规划(fractionalprogramming)的一般形式:对于解空间S、连续的实值函数a(x),b(x),满足∀x∈S,b(x)>0,

在线算法和离线算法的区别

本章浅谈一下在线算法,当然,说到在线算法会想到离线算法,这两个概念都会提到,帮助大家理解。(一)在线算法在计算机科学中,一个在线算法是指它可以以序列化的方式一个个的处理输入,也就是说在开始时并不需要已经知道所有的输入。相对的,对于一个离线算法,

常用的双指针技巧

什么是双指针?其实很好理解,双指针是一种思想,一种技巧或一种方法,并不是什么特别具体的算法,在二分查找等算法中经常用到这个技巧。具体就是用两个变量动态存储两个或多个结点,来方便我们进行一些操作。通常用在线性的数据结构中,比如链表和数组,有时候也会用在图算法中。

回文树/回文自动机 (PAM) 实现及模板

咱们可以先从字面意思来理解什么是回文树,回文树(回文自动机)实际上是奇偶两棵树,每一个节点代表一个本质不同的回文子串(一棵树上的串长度全部是奇数,另一棵全部是偶数),原串中每一个本质不同的回文子串都在树上出现一次且仅一次。一个节点的fail指针指向它的最长回文后缀(不包括自身,

什么是后缀数组?

对于后缀数组的概念,很多人都存在疑惑,为什么要学习后缀数组?那么我们就来说说原因,后缀数组是一个比较强大的处理字符串的算法,是有关字符串的基础算法,所以必须掌握。学会后缀自动机(SAM)就不用学后缀数组(SA)了?不,虽然SAM看起来更为强大和全面,

什么是Lyndon分解?

我们定义一个串是Lyndon串,当且仅当这个串的最小后缀就是这个串本身。该命题等价于这个串是它的所有循环表示中字典序最小的。引理1:如果u和v都是Lyndon串并且u<v,则uv也是Lyndon串。证明:1、若len(u)≥len(v)这时,

最小表示法算法解析

提到最小表示法,要了解它的定义,最小表示法是用于解决字符串最小表示问题的方法。一算法简介:当一个字符串形成一个环的时候,要比较两个字符串是否相同就会变得很困难,因为你不知道对于第二个字符串来说,以哪个字符开始比较才会和第一个字符串相同。所以我们就会想到枚举起点比较是否相同,而这样的复杂度O(n^2)。