首页 > 数据分析
头像 Dear㉿You
发表于 2020-11-20 21:19:51
C 数据分析 分析 先看题目:最大的最小。其在做这一类的题都有一种思想。因为暴力时直接枚举区间,但是反着来,求出一个数对某一段区间的影响,拿样例举例一个数能作为最大值,区间的范围之内就不能出现大于它的任何数,设lm[i]:位于i左边第一个大于a[i]的数的位置+1 rm[i]:位于i右边第一个大于 展开全文
头像 Bernard5
发表于 2020-11-23 21:37:07
题意 给定一个长度为的数组。找它的长度为的区间中的最大值,求这些所有的最大值的集合里的最小值。 思路 利用单调栈,对于每一个,找出来左边第一个比它大的,找出来右边第一个比它大的。并且把它们的下标分别存和里。 对于每一个,它能作为最小值的最长区间已经确定了。那么就可以通过比较得到一部分长度的区间的最 展开全文
头像 ZhongHaoWang
发表于 2021-08-27 17:06:39
由于我们只需要考虑每个长度为N的子数组的最大值,因此我们枚举每个元素,记录其可以为子数组最大值的覆盖区间长度,在该区间内该元素始终为最大值;同时我们可以知道,若存在一个长度为m的子数组最大值为k,显然可以找到任意一个长度小于等于m的子数组使其最大值为k;因此我们首先通过单调栈求出每个元素的覆盖区间, 展开全文
头像 YoungPQ
发表于 2021-08-22 10:32:03
第一步,设置维护两个数组 leftBiggerId[]、 rightBiggerId[],返回结果为res[] 计算 leftBiggerId[i] :在第i个元素的左边,找到一个最近的元素numbers[x],使得numbers[x]>numbers[i],则leftBiggerId[i]= 展开全文

等你来战

查看全部