这是一个编码面试问题。我们得到一个数组say ,我们只random_arr
需要使用swap函数对其进行排序。
此外,每个元素的交换次数random_arr
也是有限的。为此,您将获得一个数组parent_arr
,其中包含 的每个元素的交换次数random_arr
。
约束:
- 您应该使用交换功能。
- 每个元素可以重复最少 5 次,最多 26 次。
- 您不能将给定数组的元素设为 0。
- 您不应该编写辅助函数。
现在我将解释如何parent_arr
声明。如果parent_arr
是这样的:
parent_arr[] = {a,b,c,d,...,z} 然后
a can be swapped at most one time.
b can be swapped at most two times.
如果 parent_arr[] = {c,b,a,....,z} 那么
c can be swapped at most one time.
b can be swapped at most two times.
a can be swapped at most three times
我的解决方案:
对于 random_arr[] 中的每个元素,如果它已排序,则存储它下面有多少元素。现在从 parent_arr[] 中选择具有最小交换计数的元素并检查它是否存在于 random_arr[] 中。如果是并且它已经发生了不止一次,那么它将有多个可以放置的位置。现在选择具有最大交换计数的位置(而不是该位置的元素,非常宝贵)并交换它。现在减少该元素的交换计数并对 parent_arr[] 进行排序并重复该过程。
但它的效率很低,其正确性无法得到证明。有任何想法吗?