当前位置: 首页 > 知识库问答 >
问题:

求数组中非递减和非递增子序列的数目

欧阳昊焱
2023-03-14

我已经设计了一个解决方案,可以使用一些测试用例,但是,对于许多我正在使用的算法是不正确的。

而不是寻求一个解决方案,我只是要求解释子序列是如何创建的,然后我将自己实现一个解决方案。

例如,输入:

6 6

问题陈述

在Quora上,我们有跟踪我们每天获得的支持投票数的聚合图。

当我们在特定大小的窗口上查看模式时,我们考虑了尽可能有效地跟踪趋势的方法,例如非递减和非递增子范围。

天数窗口定义为连续天数范围。因此,需要计算该度量的窗口正好为n−k+1个。一个非递减子范围被定义为索引[A,b],A 的连续范围,其中每个元素至少与前一个元素一样大。类似地定义了一个非递增子范围,只是每个元素至少与下一个元素一样大。在一个窗口内最多有K(K−1)/2个这些相应子范围,因此度量以[−K(K−1)/2,K(K−1)/2]为界。

约束条件

1≤n≤100,000天1≤k≤n天

第1行:两个整数,N和k
第2行:N个upvote计数的正整数,每个整数小于或等于10^9

输出格式

第1行..:n−k+1个整数,每行每个窗口的结果有一个整数

1 2 3 1 1

样本输出

3


共有1个答案

仲孙鸿畴
2023-03-14

给定窗口大小为6,序列

5 5 4 1 8 7

非递减子序列是

5 5
1 8

而非递增的子序列是

5 5
5 4
4 1
8 7
5 5 4
5 4 1
5 5 4 1
 类似资料:
  • 如何利用fenwick树求数组中一个非递减子序列的最大和?例如,我们有1 4 4 2 2 3 3 1,这里一个非递减子序列的最大和是11(1 2 2 3 3)。

  • 假设我们有一些不相交的递减序列: 我选择一些递减序列(例如按顺序,,,,的5个递减序列)并将它们级联(结果序列。 现在我想求S中最长递增子序列的长度,在上面的示例中:-> 预期时间复杂度小于O(S)。

  • 问题-给定一个长度为N的整数数组,求最长子序列的长度,该序列先增加后减少。投入:[1,11,2,10,4,5,2,1] 产出:6 说明:[1,210,4,21]是最长的子序列。 我写了一个自上而下的方法。我有五个参数--vector A(包含序列)、start index(表示当前索引)、previer value、large(表示当前子序列中的最大值)和map(m)stl。 对于回溯方法,我有两

  • 所以我用动态编程做了一个简单的python代码来解决最大递增子序列的问题。问题如下: 给定一个数组 arr 的 N 个正整数。求出给定数组的最大和递增子序列的总和。 输入:输入的第一行包含一个整数 T,表示测试用例的数量。每个测试用例的第一行是 N(数组的大小)。每个测试用例的第二行包含数组元素。 输出:对于每个测试用例,在新行中打印所需的答案。 在我的解决方案中,我正在计算一个名为“总和”的列表

  • 给定一个整数序列作为一个数组,我必须确定是否可以通过从数组中移除不超过一个元素来获得一个严格递增的序列。例 对于,输出应该是 这个数组中没有一个元素可以为了得到严格的递增序列而被移除。

  • 我有N个整数,例如3、1、4、5、2、8、7。可能有一些重复的。我想把这个序列分成连续的子序列,这样我们就可以从它们形成非递减序列。如何计算最小切割次数?对于上面提到的例子,答案是6,因为我们可以将这个序列划分为{3}、{1}、{4,5}、{2}、{7}、{8},然后形成{1,2,3,4,5,7,8}。最快的方法是什么? 有没有人知道假设某些数字可能相等时该怎么解呢?