Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 7100ea8

Browse files
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‎

Lines changed: 12 additions & 1 deletion
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
Lines changed: 13 additions & 1 deletion
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]
Lines changed: 12 additions & 1 deletion
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
Lines changed: 54 additions & 1 deletion
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)

AltStyle によって変換されたページ (->オリジナル) /