【发布时间】:2020-12-10 07:03:03
【问题描述】:
我正在尝试解决数据结构和算法问题,该问题指出,给定一组 1 和 0,将数字分组,使所有 0 在一起,所有 1 在一起。如果只能交换两个相邻元素,则完成此操作所需的最小交换次数是多少?哪一组在哪一端并不重要。
例如:
[0,1,0,1] = [0,0,1,1] 1 次交换
[1,1,1,1,0,1,0] = [1,1,1,1,1,0,0] 1 次交换
[1, 0, 1, 0, 0, 0, 0, 1] = = [1,1,1,0,0,0,0,0] 6 次交换
请注意,这与此处提出的问题不同:
Find the minimum number of swaps required such that all the 0s and all the 1s are together
我没有对数组进行排序,我只是想将所有的 0 和所有的 1 组合在一起,无论哪个在哪一端都没有关系。
我真的不知道从哪里开始。有人可以帮我吗?
【问题讨论】:
-
不确定你是如何计算掉期的。在您的第一个示例中,我可以通过一次交换获得该结果,交换元素 1 和 2。
-
@MarkRansom 啊,是的,这是一个错误。编辑了!任何帮助将不胜感激!
-
与第二个示例相同,而且输出中似乎多了一个
1。 -
稍作调整即可尝试冒泡排序。
-
@MarkRansom 啊!我粗心了!对不起!