我正在尝试解决以下问题,但我被困住了。问题如下 -
假设您有一个整数数组。您必须从数组中删除某些元素,以便整个数组按升序排序。元素不能重复,因此如果在数组中重复任何元素,也应该删除它。您必须找到需要从数组中删除的最小整数数,以便按升序对其进行排序。
我发布了一些测试用例,以便问题变得清晰:
输入
1 1 2
输出-1(因为重复1,如果删除,则对数组进行排序)
2.Input - 1 8 9 3 4 5
输出-2(因为8,9如果被移除,阵列被排序,它也是所需的最小数量)
输入 - 1 7 8 9 3
输出 - 1(只应移除3个)
我的方法是遍历数组,如果前一个数字大于当前数字,则应删除之前的数字。通过这种方法,1和2将得到解决,但案例3将为此方法输出3。
我该如何解决这个问题?是否有任何可能有用的特定算法?
答案 0 :(得分:2)
让我们假设我们抛弃了一些数字,以便对剩余的数组进行排序。剩下的数字在初始数组中形成了什么?越来越多的子序列。我们希望尽可能少地丢弃数字,或者换句话说,尽可能多地保留数字。因此,我们需要找到给定数组中增长最长的子序列。