日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 情侣牵手 (贪心)

發布時間:2024/9/30 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 情侣牵手 (贪心) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

描述

N對夫婦坐在2N個排成一排的座位上. 現求最小的交換數量,使每對夫婦并坐一起,他們可以手牽著手。

一次交換可選擇任何兩個人交換座位。

人和座位由從0到2N-1的整數表示,夫妻按順序編號,第一對是(0,1),第二對是(2,3),以此類推,最后一對是(2N-2,2N-1)。

初始座位由row [i]給出,表示坐在第i座位的人的編號。

1.len(row) 是偶數且范圍為 [4, 60].
2.row 一定是[0, 1…len(row)-1]的一個排列.

您在真實的面試中是否遇到過這個題?
樣例
樣例 1:

輸入: row = [0, 2, 1, 3]
輸出: 1

解釋: 只需交換row[1]的人和row[2]的人即可.
樣例 2:

輸入: row = [3, 2, 0, 1]
輸出: 0

解釋: 每一對夫婦已經并坐一起.

思路:
如給出一個正確輸入:row=[0,1,2,3]。 row = [3, 2, 0, 1]
步驟1:從左到右遍歷奇數位置的人,設定當前遍歷的數為row[i]
步驟2::如果row[i]為偶數,則row[i]的伴侶應該為row[i]+1,如row=[0,1,2,3]中0的伴侶是1;如果row[i]為奇數,則row[i]的伴侶為row[i]-1。如row=[0,1,2,3]中3的伴侶為2。
步驟3:返回row[i]伴侶的索引位置。list.index(a)會返回list中值為a的索引位置
步驟4:將找到的row[i]伴侶 和row[i+1] 交換下位置
步驟5:次數+1

代碼1

class Solution:def minSwapsCouples(self,row):# row :list[int]res=0 #記錄次數for i in range(0,len(row),2):#從左到右遍歷奇數位置的人tag=row[i]+1 if row[i]%2==0 else row[i]-1 #找到當前row[i]的伴侶 。找到伴侶值if row[i+1]!=tag:#如果row[i]的伴侶不是后一位,則尋找它的伴侶和row[i+1] 交換位置tagindex=row.index(tag)#row[i]的伴侶的位置索引row[i+1],row[tagindex]=row[tagindex],row[i+1]res+=1return resc=Solution() d=c.minSwapsCouples([0,2,1,3]) print(d)

結果:1

代碼2

class Solution:def minSwapsCouples(self, row: List[int]) -> int:res = 0for i in range(0,len(row),2):#從左到右遍歷奇數位置的人x = row[i]^1 #找人到row[i]的伴侶值if x == row[i+1]:#如果row[i]后一個為伴侶,不計數,退出本次循環continueres += 1#如果row[i]后一個不為伴侶,計數+1,并for 循環找到row[i]伴侶,和row[i+1]交換位置for j in range(i+1,len(row)):if row[j] == x:row[i+1],row[j] = row[j],row[i+1]breakreturn res

說明:row[i]^1 異或1
row[i]為偶數時 row[i]^1 =row[i]+1
row[i]為奇數時 row[i]^1 =row[i]-1

記憶:偶數 為0 ,或為0,異或為1 (等于偶數(0)+1)
奇數 為1 ,或為1,異或為0 (等于奇數(1)-1)

print("19^1的結果是",19^1) print("18^1的結果是",18^1)

在這里插入圖片描述

總結

以上是生活随笔為你收集整理的LeetCode 情侣牵手 (贪心)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。