Skip to content

Commit 7100ea8

Browse files
committed
2020-08-27
1 parent 2de7630 commit 7100ea8

File tree

4 files changed

+91
-4
lines changed

4 files changed

+91
-4
lines changed

0342.4的幂/0342-4的幂.py

+12-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,12 @@
1-
None
1+
class Solution(object):
2+
def isPowerOfFour(self, num):
3+
"""
4+
:type num: int
5+
:rtype: bool
6+
"""
7+
while num >= 4:
8+
if num % 4:
9+
return False
10+
num //= 4
11+
12+
return num == 1
+13-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,13 @@
1-
None
1+
class Solution(object):
2+
def thousandSeparator(self, n):
3+
"""
4+
:type n: int
5+
:rtype: str
6+
"""
7+
s = str(n)[::-1]
8+
res = ""
9+
for i in range(len(s)):
10+
res += s[i]
11+
if i % 3 == 2 and i != len(s) - 1:
12+
res += "."
13+
return res[::-1]
Original file line numberDiff line numberDiff line change
@@ -1 +1,12 @@
1-
None
1+
class Solution(object):
2+
def minOperations(self, nums):
3+
"""
4+
:type nums: List[int]
5+
:rtype: int
6+
"""
7+
res = 0
8+
for num in nums:
9+
res += bin(num).count("1")
10+
11+
res += len(bin(max(nums))[2:]) - 1
12+
return res
Original file line numberDiff line numberDiff line change
@@ -1 +1,54 @@
1-
None
1+
class Solution(object):
2+
def containsCycle(self, grid):
3+
"""
4+
:type grid: List[List[str]]
5+
:rtype: bool
6+
"""
7+
dx = [1, -1, 0, 0]
8+
dy = [0, 0, 1, -1]
9+
ufs = UnionFindSet(grid)
10+
m, n = len(grid), len(grid[0])
11+
for i in range(m):
12+
for j in range(n):
13+
for next_i, next_j in [(i - 1, j), (i, j - 1)]:
14+
if 0 <= next_i < m and 0 <= next_j < n and grid[next_i][next_j] == grid[i][j]:
15+
if ufs.find(i * n + j) == ufs.find(next_i * n + next_j):
16+
return True
17+
else:
18+
ufs.union(i * n + j, next_i * n + next_j)
19+
return False
20+
21+
class UnionFindSet(object):
22+
def __init__(self, grid):
23+
m, n = len(grid), len(grid[0])
24+
self.roots = [-1 for i in range(m*n)]
25+
self.rank = [0 for i in range(m*n)]
26+
self.count = 0
27+
28+
for i in range(m):
29+
for j in range(n):
30+
self.roots[i * n + j] = i * n + j
31+
self.count += 1
32+
33+
def find(self, member):
34+
tmp = []
35+
while member != self.roots[member]:
36+
tmp.append(member)
37+
member = self.roots[member]
38+
for root in tmp:
39+
self.roots[root] = member
40+
return member
41+
42+
def union(self, p, q):
43+
parentP = self.find(p)
44+
parentQ = self.find(q)
45+
if parentP != parentQ:
46+
if self.rank[parentP] > self.rank[parentQ]:
47+
self.roots[parentQ] = parentP
48+
elif self.rank[parentP] < self.rank[parentQ]:
49+
self.roots[parentP] = parentQ
50+
else:
51+
self.roots[parentQ] = parentP
52+
self.rank[parentP] -= 1
53+
self.count -= 1
54+

0 commit comments

Comments
 (0)