![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 82
water_skiing
这个作者很懒,什么都没留下…
展开
-
单调栈-最大矩形
一、引言给定n个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。来源:力扣(LeetCode)LeetCode-84. 柱状图中最大的矩形二、单调栈1、栈中维护数组的下标,栈中下标对应的数组值升序排列。栈中初始化-1结点,起始标记。2、O(n)遍历数组中每个值,对第i个值有两种情况(1)prev == -1 || heights[i] >= heights[prev]:下标i入栈...原创 2020-10-13 13:57:06 · 564 阅读 · 0 评论 -
有限状态机
一、引言使用leetcode原题“有效数字”,给定一个字符串,判断是否可以转为十进制数,包含科学计数法、正负数、小数等。来源:力扣(LeetCode)LeetCode-65. 有效数字二、有限状态机FSM有限状态机本质为一个状态转移图,要素为图中各个结点的状态,以及状态之间的转移动作。1、定义单步转移动作,定义函数movement()将当前到来的字符表示为动作编号。2、定义状态转移图,使用邻接矩阵FSM[11][6]表示该状态转移图。其中 行数11表示状态结点数目...原创 2020-10-02 16:43:45 · 222 阅读 · 0 评论 -
Manacher算法-最长回文子串
一、引言给定一个字符串s,找到s中最长的回文子串。O(n)时间复杂度。来源:力扣(LeetCode)LeetCode-5. 最长回文子串二、Manacher算法1、该算法通过依据回文子串中心字母考虑,所以首先在源字符串中每个字符间插入特殊符号,拼凑为奇数个字符的串。(包括字符串首尾:方便最终截取答案回文子串)2、该算法流程为单次扫描,每个字符只扫描一次。所以记录如下变量:(1)maxl:扫描到的最大的右边界下标(2)maxi:最大右边界所对应的回文子串的中心...原创 2020-10-02 16:30:05 · 144 阅读 · 0 评论 -
凸包
一、引言凸包(Convex Hull)是一个计算几何(图形学)中的概念。在一个实数向量空间V中,对于给定集合X,所有包含X的凸集的交集S被称为X的凸包。X的凸包可以用X内所有点(X1,...Xn)的凸组合来构造。通俗来说,如果给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边形,它能包含点集合中所有的点。下图中外部的5个点就组成了这个点集的一个凸包可以了解到凸包...原创 2018-08-03 23:12:42 · 3145 阅读 · 0 评论 -
二分搜索的其他用法
二分搜索,最常见的是在有序数组中最快地查找某个特定的值,但是二分搜索也有一些别的用处,利用二分搜索的特性,当某个集合按某个特性“有序”时,我们就可以很好地利用二分搜索来找到所需的元素,而不是仅仅局限在最初所学的用途上。一、基础二分搜索在讨论别的用途前,先考虑下最基础的用法,也就是如何在一个数列中找到符合条件的值。来看一道例题: 1、已知有n个正整数a0, ...原创 2018-07-26 19:30:37 · 463 阅读 · 0 评论 -
状态压缩DP
状态压缩DP是动态规划更复杂的问题,通常使用动态规划来解决整数类型的问题,比如0-1背包这些典型的动态规划例子。但是,也可以对整数以外的更复杂的类型采用动态规划,而这类记录不同时刻状态的一种动态规划就是状态压缩动态规划。 顾名思义,状态压缩DP,我们的记录不再代表一个整数,而表示了某种状态,通常采用二进制形式表达。 旅行商问题(TSP, Trav...原创 2018-07-28 19:27:33 · 191 阅读 · 0 评论