Re: [閒聊] 每日LeetCode已回收

看板Marginalman作者 (麵包屌)時間2年前 (2023/04/29 03:21), 編輯推噓2(200)
留言2則, 2人參與, 2年前最新討論串304/719 (看更多)
839. Similar String Groups 如果 string A 可以交換某兩個字元的順序變成 string B 那 A 和 B 就是相似的 similar group 代表這個 group 中任意兩個 string A B 都能有以下關係: A 和 A1 相似,A1 和 A2 相似,......,AN 和 B 相似 同時 A1~AN 必須在 similar group 裡 好難講喔肏 反正就是如果畫成 graph,兩點有 edge 代表相似 similar group 就是 connected component Example 1: Input: strs = ["tars","rats","arts","star"] Output: 2 Example 2: Input: strs = ["omv","ovm"] Output: 1 思路: 1.用 disjoint set 吧 有 edge 的就併在一起 枚舉 strs[i] 和 strs[j] 看他們是不是相似 O(n^2)次檢查*(檢查花費O(n)+union) 感覺不會過 真奇怪 class Solution: def numSimilarGroups(self, strs: List[str]) -> int: def check(a, b): diff = 0 for i in range(len(a)): diff += (a[i] != b[i]) if diff > 2: return False return True n = len(strs) root = list(range(n)) def find(x): if root[x] != x: root[x] = find(root[x]) return root[x] for i in range(n): for j in range(i+1, n): a, b = strs[i], strs[j] if check(a, b): ra, rb = find(i), find(j) root[ra] = rb return sum([root[i] == i for i in range(n)]) 隨便啦 -- 沒人在乎 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.252.3.181 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1682709702.A.70A.html

04/29 03:50, 2年前 , 1F
n^3啊哈
04/29 03:50, 1F

04/29 09:10, 2年前 , 2F
好強 會過吧 這題range那麼小
04/29 09:10, 2F
文章代碼(AID): #1aJ1p6SA (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1aJ1p6SA (Marginalman)