应该使用哪种算法来解决这种排序练习?

时间:2015-03-17 18:31:08

标签: algorithm sorting

我正在尝试解决以下问题,但我被困住了。问题如下 -

假设您有一个整数数组。您必须从数组中删除某些元素,以便整个数组按升序排序。元素不能重复,因此如果在数组中重复任何元素,也应该删除它。您必须找到需要从数组中删除的最小整数数,以便按升序对其进行排序。

我发布了一些测试用例,以便问题变得清晰:

  1. 输入

    1 1 2

    输出-1(因为重复1,如果删除,则对数组进行排序)

  2. 2.Input - 1 8 9 3 4 5

    输出-2(因为8,9如果被移除,阵列被排序,它也是所需的最小数量)

    1. 输入 - 1 7 8 9 3

      输出 - 1(只应移除3个)

      我的方法是遍历数组,如果前一个数字大于当前数字,则应删除之前的数字。通过这种方法,1和2将得到解决,但案例3将为此方法输出3。

      我该如何解决这个问题?是否有任何可能有用的特定算法?

1 个答案:

答案 0 :(得分:2)

让我们假设我们抛弃了一些数字,以便对剩余的数组进行排序。剩下的数字在初始数组中形成了什么?越来越多的子序列。我们希望尽可能少地丢弃数字,或者换句话说,尽可能多地保留数字。因此,我们需要找到给定数组中增长最长的子序列。