删除元素以排序数组

Joo*_*ost 1 sorting algorithm

我正在寻找一种算法来排序数组,但不是通过移动值.相反,我想删除尽可能少的值并最终得到一个排序列表.基本上我想找到最长的升序子阵列.

为了显示:

1 4 5 6 7 2 3 8
Run Code Online (Sandbox Code Playgroud)

应该成为(2删除)

1 4 5 6 7 8
Run Code Online (Sandbox Code Playgroud)

而不是(5删除)

1 2 3
Run Code Online (Sandbox Code Playgroud)

我可以看到我如何以一种天真的方式做到这一点,即通过递归检查每个元素的'remove'和'dont remove'树.我只是想知道是否有更快/更有效的方法来做到这一点.这种问题有一个共同的算法吗?

Tho*_*mas 8

您正在寻找增长最长的子序列问题.有一种算法可以在O(n log n)时间内解决它.