摘要: 题目大意给出一个柱形图中柱子的高度,每个柱子的宽度为1,柱子相邻。求出柱形图中可能形成的矩形的最大面积。题目分析以每个柱子(高度为h[i])为中心,向两边延展求出以该h[i]为高度的矩形的最大宽度w[i]。h[i]*w[i]得到以该柱子为中心的最大矩形面积,遍历一遍之后取最大值即可。关键在于求出以柱... 阅读全文
posted @ 2015-09-24 18:30 农民伯伯-Coding 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 题目大意定义字符串T的子串T(i, k)=TiTi+1...Ti+k-1, 1≤i≤i+k-1≤|T|. 给定两个字符串A和B,定义集合S为S = {(i, j, k) | k≥K, A(i, k)=B(j, k)}.对于给定的字符串A和B,求出满足要求的集合S的大小。题目分析就是求A和B中有多少个... 阅读全文
posted @ 2015-09-24 18:05 农民伯伯-Coding 阅读(434) 评论(0) 推荐(0) 编辑
摘要: 题目大意给定一行数,共N个。有一个长度为K的窗口从左向右滑动,窗口中始终有K个数字,窗口每次滑动一个数字。求各个时刻窗口中的最大值和最小值。题目分析直接搜索,复杂度为O(n^2)。本题可以看做是一个区间求最大值最小值的问题,因此考虑使用线段树解决。和用单调队列方法相比,时间复杂度O(nlogn),略... 阅读全文
posted @ 2015-09-24 16:42 农民伯伯-Coding 阅读(325) 评论(0) 推荐(0) 编辑
摘要: 题目大意给定一行数,共N个。有一个长度为K的窗口从左向右滑动,窗口中始终有K个数字,窗口每次滑动一个数字。求各个时刻窗口中的最大值和最小值。题目分析直接搜索,复杂度为O(n^2)。考虑使用单调队列,单调队列中的元素(或者元素的相关信息)单调递增或者递减。在本题中用一个单调递增的队列A保存当前窗口中值... 阅读全文
posted @ 2015-09-24 16:40 农民伯伯-Coding 阅读(648) 评论(0) 推荐(0) 编辑
摘要: 题目大意 N头牛排成一列,每头牛A都能看到它前面比它矮的牛i,若前面有一个比他高的牛X,则X之前的牛j,A都无法看到。给出N头牛的高度,求出这N头牛可以看到牛的数目的总数。 题目分析 画图之后,可以很容易看出是典型的单调栈问题。单调栈问题中栈元素一般有两个属性:一是牛的索引位置,二是牛的高度。每次得 阅读全文
posted @ 2015-09-24 16:09 农民伯伯-Coding 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 题目大意给出一个数字串,找出其中至少重复K次的最长的子串长度。题目分析直接用后缀数组来求解,限制height[i]的长度来对排好序的后缀进行分组(这种方法经常在字符串问题中被使用)。先判断是否有至少K个长度大于等于M的子串,这可以通过将height[i] >= M来对排好序的后缀进行分组,然后判断组... 阅读全文
posted @ 2015-09-24 15:51 农民伯伯-Coding 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 题目大意给定一串数字,长度为N。定义数字中的某个连续的子串为一个"theme",只要子串满足:(1)长度 >= 5(2)和该子串相同或者该子串的“变种串”在整串数字中出现次数大于1(3)假设整串中有k个该子串及其“变种串”,那么其中至少有两个不相重叠求满足要求的 "theme" 串的最长长度。题目分... 阅读全文
posted @ 2015-09-24 15:41 农民伯伯-Coding 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 题目大意给定两个字符串A,B,求出A和B中最长公共子串的长度。题目分析字符串的子串可以认为是是字符串的某个后缀的前缀,而求最长公共子串相当于A和B的某两个后缀的最长相同前缀。可以考虑使用后缀数组,将A和B连接起来,中间添加一个在A和B中都未出现过的字符隔开,然后求这个新串的后缀数组以及height数... 阅读全文
posted @ 2015-09-24 15:07 农民伯伯-Coding 阅读(277) 评论(0) 推荐(0) 编辑