- 看看没有什么思路,参考了其他人的博客,直接贪心就能得到正确答案。(证明不会)
- 这里用到了位运算中的异或省了好多事。
# 765. Couples Holding Hands
#
# 这道是经典的贪心算法题,贪得我摸不着头脑
class Solution:
def minSwapsCouples(self, row):
"""
:type row: List[int]
:rtype: int
"""
# 次数
numbers=0
for x in range(len(row)):
if x%2==0:
# 本题的经典之处用异或来确定成对元素(奇大偶小),用异或恰好使奇数-1, 偶数+1,直接匹配
if row[x]==row[x+1]^1:
continue
else:
row[row.index(row[x+1]^1)],row[x]=row[x],row[row.index(row[x+1]^1)]
numbers+=1
return numbers