随笔分类 - 经典编程
检验入栈序列、出栈序列是否合法
摘要:题目:元素出栈、入栈顺序的合法性。如:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1),则合法。入栈的序列(1,2,3,4,5),出栈序列为(4,5,2,3,1),则不合法。 思路:借用一个辅助栈,先按照入栈顺序push,直到栈顶元素和出栈序列相等就pop,以此类推,最后栈为空且两
阅读全文
涂颜色的RPG问题
摘要:长度为n的方格,刷3种颜色的颜料,相邻的方格颜料颜色不能相同,且首尾方格颜色不能相同。每个方格必须涂色。计算一共有多少种涂色方式。 解题思路:(1)f(1)=3,f(2)=6,f(3)=6 (2)如果有n个方格,当对第n个方格填色时,有两种情况: 1)应该已经对前面n-1个方格填好了色,有f(n-1
阅读全文
最大子矩阵和
摘要:求一个M*N的矩阵的最大子矩阵和。找出在矩阵中,所有元素加起来之和最大的子矩阵比如在如下这个矩阵中:0 -2 -7 09 2 -6 2-4 1 -4 1-1 8 0 -2 拥有最大和的子矩阵为:9 2-4 1-1 8其和为15。 思路:首先我们考虑如果是一维数组,我们要找到其中的最大子段和,应该怎么
阅读全文
最长公共子序列
摘要:上一篇我们总结了两个字符串的一个最长操作——最长公共连续子串,现在我们来总结下另外一个最长——最长公共子序列,这个和上一个的区别在于,它不用要求子序列连续。 这个是DP的典型题, 子字符串的最优解为字符串提供了决策依据。有两个字符串s和p,设dp[i,j]为子串s[0-i]和p[0-j]的最长公共子
阅读全文
最长公共连续子串
摘要:前面我们已经写过关于一个字符串的最长回文子串(三层遍历,DP,Manacher法)以及无重复字符的最长子串(unorder_map或者记录字符的最后出现位置),今天我们总结下两个字符串的一个最长操作——最长公共连续子串。最重要的是连续。 (1)我们可以首先用最基本的循环遍历来求解,求解以第一个字符串
阅读全文
美团笔试最大矩形面积
摘要:给定一组非负整数组成的数组h,代表一组柱状图的高度,其中每个柱子的宽度都为1。 在这组柱状图中找到能组成的最大矩形的面积(如图所示)。 入参h为一个整型数组,代表每个柱子的高度,返回面积的值。 这个问题和前面我们讲过的一个盛最多水的容器很相似,不同的地方是这个边界可以不为首尾,因为内部也可能存在更大
阅读全文
单调栈以及应用
摘要:单调栈有以下两个性质: 1、若是单调递增栈,则从栈顶到栈底的元素是严格递增的。若是单调递减栈,则从栈顶到栈底的元素是严格递减的。 2、越靠近栈顶的元素越后进栈。 单调栈与单调队列不同的地方在于栈只能在栈顶操作,因此一般在应用单调栈的地方不限定它的大小,否则会造成元素无法进栈。 元素进栈过程:对于单调
阅读全文
浙公网安备 33010602011771号