是否有NlogN解来找到最长的递增子序列?

问题描述 投票:-1回答:1

我正在HackerRank上解决this problem,但是使用O(n ^ 2) DP方法获得了TLE。

如果有人可以指导完成O(NLogN)解决方案的工作,那就太好了。找不到很好的解释。

c++ algorithm data-structures
1个回答
0
投票

解决O(n ^ 2)中最长增长子序列的通用方法是:

for (int k = 0; k < n; k++) {
  length[k] = 1;
  for (int i = 0; i < k; i++) {
      if (array[i] < array[k]) {
          length[k] = max(length[k],length[i]+1);
      }
   }
}

一旦您了解了这一点,就可以轻松理解O(logN)。您可以找到O(logN)方法here

© www.soinside.com 2019 - 2024. All rights reserved.