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

元素构成连续序列的最长子阵列

马坚白
2023-03-14

{4,5,1,5,7,6,8,4,1},答案是5。

对于第一个例子,子数组{5,3,1,4,2}排序后可以形成连续序列1,2,3,4,5,它们是最长的。

对于第二个示例,子数组{5,7,6,8,4}是结果子数组。

共有1个答案

岑熙云
2023-03-14

在O(n)中无重复项解原问题的算法。也许,它有助于某人开发处理重复项的O(n)解决方案。

投入:[a1、a2、a3、...]

将原始数组映射为对,其中第一个元素是值,第二个元素是数组的索引。

在排序的对数组中运行循环

在线性时间内,我们可以检测到连续的数组a3、a2、A1。连续组定义为next值=prev值+1。在扫描期间,保持当前组大小(n)、索引的最小值(min)和当前索引的总和(actualSum)。

在连续群内的每一步上,我们可以估计指数的和,因为它们用第一个元素min,步骤1,和到目前为止看到的群的大小n创建算术级数。这个和估计可以用算术级数的公式在O(1)时间内完成:

估计和=min*n+n*(n-1)/2;

如果在连续组内的某一循环步骤上估计和等于实际和,则可见到目前为止连续组满足条件。将n保存为当前最大值结果,或在当前最大值和n之间选择最大值。

如果在值元素上我们不再看到连续组,那么重置所有值并执行相同的操作。

 类似资料:
  • A是一个数组,B是A中所有元素的质因数阶,< code>size(A)=N (1 到目前为止,我还没有想过这个问题,所以没有什么成就,但是我保证我已经想了很久了,希望有帮助,谢谢!

  • 例如: 给定为序列,和是要考虑的有效子序列,但不是,因为它包含连续的元素3和2。 如何找到一个最长的子序列,使它在中单调递减 我知道问题的版本包含单调的增加/减少。 但这里的附加条件让它变得困难。 有没有更好的办法?

  • 我以前见过一些最长的连续序列问题,比如查找递增子序列。我现在正在努力进一步发展我的技能。给定一个整数数组,我想找到一个最长的连续序列,其中各个子序列中所有元素的差值小于一个给定的数字,例如3。一个例子是[10,11,12,15,13],其中只有前三个元素满足条件。此外,我还想返回给定数组中第一个和最后一个元素的索引。 我想做两个函数;get_first_element(arr)和get_last_

  • 有人能为下面的问题提出一个简单的解决方案吗? 最长子数组:查找子数组中元素之和小于或等于“k”的最长连续子数组的长度。 输入为:< code>array和< code>k。 例子: 输出: 2个 解释: 子数组:{1},{2},}3},1,2},2,3},{1,2,3} {1,2} =

  • 给定一个列表{x_i},我想要找到从每个元素开始的最长的递增子序列,使得起始元素包含在子序列中。 最明显的方法是对每个元素执行通常的最长递增子序列算法,给出O(n^2logn)。这能打吗?

  • 本文向大家介绍手写算法:最长公共连续子序列相关面试题,主要包含被问及手写算法:最长公共连续子序列时的应答技巧和注意事项,需要的朋友参考一下 参考回答: