【发布时间】:2021-01-20 20:34:37
【问题描述】:
我有一个类似 [1,3,5] 的数组。对于这些元素中的每一个,我需要找到当前元素最高的最长子数组。答案将是所有子数组的长度之和。
解释。
index - 0 : Element 1 -> 元素小于当前元素的最长子数组 = [1]
index - 1 : Element 3 -> 元素小于当前元素的最长子数组 = [1,3]
index - 2 : Element 5 -> 元素小于当前元素的最长子数组 = [1,3,5]
最终答案 = 1 + 2 + 3 = 6 [单个子数组的长度]
我能够想出一个蛮力 O(N ^ 2) 来解决这个问题。有没有更好的方法来解决这个问题?
【问题讨论】:
-
你需要一个更好的例子。如果数组是排序的,就像你当前的例子一样,答案就是
1+2+...+N = N(N+1)/2
标签: algorithm dynamic-programming