我们先了解一下题意求,只要情侣在左右都可以,而且求数字 x 的对象时用到了一个技巧,x 的对象是x ^ 1。解释如下:
当 x 是偶数,则其二进制的末尾是 0,所以 x ^ 1 将其二进制的末尾改成 1,于是得到了x的对象 x + 1。
当 x 是奇数,则其二进制的末尾是 1,所以 x ^ 1 将其二进制的末尾改成 0,于是得到了x的对象 x - 1。
我们尝试用贪心算法求解:
res = 0
for i in range(0,len(row),2):
x = row[i]^1
if x == row[i+1]:
continue
res += 1
for j in range(i+1,len(row)):
if row[j] == x:
row[i+1],row[j] = row[j],row[i+1]
break
return res