我正在解决以下问题:
我必须通过删除最小数量的元素将给定的整数数组转换为排序数组。
例如:[3,5,2,10,11] 将通过删除 '2' 进行排序:[3,5,10,11]。或 [3,6,2,4,5,7,7] 将通过删除 '3','6' 进行排序: [2,4,5,7,7] 或通过删除 '6','2' : [3,4,5,7,7] (两种方式我都删除了 2 个元素,这就是为什么它们都是正确的)。
我的想法是为每个元素保留一个计数器,看看它与其他元素有多少冲突。我所说的冲突是什么意思:在第一个示例中,数字“3”和“5”各有 1 个冲突(数字“2”),数字“2”有 2 个冲突(数字“3”和“5”) . 因此,在计算冲突数组之后,我从原始数组中删除具有最大冲突数的元素,并对剩余的数组重复,直到所有元素都有 0 个冲突。
虽然这不是一种有效的方法(在某些情况下,我认为它也可能会产生错误的结果),所以我想知道是否有人能想到更好的解决方案。