765 情侶牽手

2021-10-19 10:19:16 字數 969 閱讀 7367

n 對情侶坐在連續排列的 2n 個座位上,想要牽到對方的手。 計算最少交換座位的次數,以便每對情侶可以並肩坐在一起。 一次交換可選擇任意兩人,讓他們站起來交換座位。

人和座位用 0 到 2n-1 的整數表示,情侶們按順序編號,第一對是 (0, 1),第二對是 (2, 3),以此類推,最後一對是 (2n-2, 2n-1)。

# 使用異或判斷相鄰兩人是否為情侶,若不是則迴圈餘下的人,直到找到對應的情侶,最後將其互換位置

# 0(00000000) ^ 1(00000001) = 1

# 2(00000010) ^ 3(00000011) = 1

# 4(00000100) ^ 5(00000101) = 1

class

solution

:def

minswapscouples

(self, row: list[

int])-

>

int:

i =0# 初始化需要交換的次數

for x in

range(0

,len

(row),2

):# 以列表長度為區間,步長為2,確定情侶中甲方位置

if row[x]

^ row[x +1]

!=1:# 判斷甲右側是否為其對應乙

for j in

range

(x +2,

len(row)):

# 若不是則遍歷其右側所有人直到找到甲對應的乙

if row[x]

^ row[j]==1

:# 若找到乙

row[x +1]

, row[j]

= row[j]

, row[x +1]

# 交換甲右側角色和乙的位置

i +=

1# 交換次數+1

break

return i

765 情侶牽手

n 對情侶坐在連續排列的 2n 個座位上,想要牽到對方的手。計算最少交換座位的次數,以便每對情侶可以並肩坐在一起。一次交換可選擇任意兩人,讓他們站起來交換座位。人和座位用0到2n 1的整數表示,情侶們按順序編號,第一對是 0,1 第二對是 2,3 以此類推,最後一對是 2n 2,2n 1 這些情侶的...

765 情侶牽手

765.情侶牽手 n 對情侶坐在連續排列的 2n 個座位上,想要牽到對方的手。計算最少交換座位的次數,以便每對情侶可以並肩坐在一起。一次交換可選擇任意兩人,讓他們站起來交換座位。人和座位用0到2n 1的整數表示,情侶們按順序編號,第一對是 0,1 第二對是 2,3 以此類推,最後一對是 2n 2,2...

765 情侶牽手

n 對情侶坐在連續排列的 2n 個座位上,想要牽到對方的手。計算最少交換座位的次數,以便每對情侶可以並肩坐在一起。一次交換可選擇任意兩人,讓他們站起來交換座位。人和座位用0到2n 1的整數表示,情侶們按順序編號,第一對是 0,1 第二對是 2,3 以此類推,最後一對是 2n 2,2n 1 這些情侶的...