我们得到一个数组,该数组的元素代表猫和狗。我们必须通过交换来重新排列元素,以使没有两只猫或狗在相邻位置。
注意:我们可以将数组的元素与任何元素交换。
Eg: given input: [d,c,d,c,c]
exp o/p: 2
Explanation :
step 1: swap index-0 and index-1 =>[c,d,d,c,c]
step 2: swap index2 and index-3 =>[c,d,c,d,c]
input: [c,d,d,c,c,c]
exp o/p : not possible
答案 0 :(得分:4)
n == m + 1
或n == m
是否为真。return
。n == m + 1
,我们知道在所有偶数索引上都必须有一个n
,对于所有奇数索引,都必须有一个m
。 n == m
的起始值很重要!如果交换次数是算法中最重要的部分,请对两个可能的变体都运行步骤5,并比较所得子数组的长度。 [1] ,谢谢@Ishpreet指出这一点!n
或m
。如果相应索引的值不正确(例如,在索引0上存在m
而不是n
,请注意,在数组中向下放置错误放置的n's
或{{ 1}}。[C,C,C,C,D,D,D,D]
错误的C = [1,3]
错误的D = [4,6]
交换(1,4)和(3,6)
结果:[C,D,C,D,C,D,C,D]
[1] 算法的复杂度因此不会改变。