0

我正在尝试从耐心排序的第 1 阶段构建最长的子序列。这在 O(n log n) 中运行。然而,当试图从单个堆中构建最长的子序列时,我似乎无法提出比 O(n^2) 更快的任何东西。我正在使用的算法(在 C++ 中)如下。如果需要进一步解释,我可以做进一步的解释,我可以这样做。

 vector<int> composeLIS(const vector<vector<int>>& piles)
 {
      vector<int> LIS;
      int prev;
      for (auto i = v.end()-1; i >= v.begin(); i--)
      {
          if (i == v.end() - 1)
          {
              auto j = i[i->size()-1][0];
              LIS.push_back(j);
              prev = j;
          }
          else
          {
              for (auto j = i->begin(); j < i->end(); j++)
              {
                  if (prev > *j)
                  {
                      LIS.insert(LIS.begin(),*j);
                      prev = *j;
                      break;
                  }
              }
          }
      }
      return LIS;
 }

有没有办法以比 O(n^2) 更好的复杂度组合子序列?

4

0 回答 0