我正在解决以下问题:
我必须通过删除最小数量的元素将给定的整数数组转换为排序数组。
例如:[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 个冲突。
但这不是一种有效的方法(在某些情况下,我认为它也可能会产生错误的结果),所以我想知道是否有人能想到更好的解决方案。