Skip to content

Commit b4b6748

Browse files
committed
Problem done
1 parent 1daeac5 commit b4b6748

File tree

4 files changed

+76
-1
lines changed

4 files changed

+76
-1
lines changed

Python/Island Perimeter.py

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
from typing import List
2+
3+
4+
class Solution:
5+
"""
6+
Time: O(n*m)
7+
Memory: O(1)
8+
"""
9+
10+
LAND = 1
11+
WATER = 0
12+
13+
def islandPerimeter(self, grid: List[List[int]]) -> int:
14+
n, m = len(grid), len(grid[0])
15+
perimeter = 0
16+
17+
for r in range(n):
18+
for c in range(m):
19+
if grid[r][c] != self.LAND:
20+
continue
21+
if r == 0 or grid[r - 1][c] == self.WATER:
22+
perimeter += 1
23+
if r == n - 1 or grid[r + 1][c] == self.WATER:
24+
perimeter += 1
25+
if c == 0 or grid[r][c - 1] == self.WATER:
26+
perimeter += 1
27+
if c + 1 == m or grid[r][c + 1] == self.WATER:
28+
perimeter += 1
29+
30+
return perimeter
31+
32+
33+
class Solution:
34+
"""
35+
Time: O(n*m)
36+
Memory: O(1)
37+
"""
38+
39+
LAND = 1
40+
WATER = 0
41+
42+
def islandPerimeter(self, grid: List[List[int]]) -> int:
43+
n, m = len(grid), len(grid[0])
44+
return sum(
45+
sum([
46+
r == 0 or grid[r - 1][c] == self.WATER,
47+
r == n - 1 or grid[r + 1][c] == self.WATER,
48+
c == 0 or grid[r][c - 1] == self.WATER,
49+
c + 1 == m or grid[r][c + 1] == self.WATER
50+
]) for r in range(n)
51+
for c in range(m) if grid[r][c] == self.LAND
52+
)
+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
from typing import List
2+
3+
4+
class NumMatrix:
5+
"""
6+
Time:
7+
creation - O(n*m)
8+
query - O(1)
9+
Memory:
10+
creation - O(n*m)
11+
query - O(1)
12+
"""
13+
14+
def __init__(self, matrix: List[List[int]]):
15+
n, m = len(matrix), len(matrix[0])
16+
self.dp = [[0] * (m + 1) for _ in range(n + 1)]
17+
for i in range(1, n + 1):
18+
for j in range(1, m + 1):
19+
self.dp[i][j] = self.dp[i][j - 1] + self.dp[i - 1][j] + matrix[i - 1][j - 1] - self.dp[i - 1][j - 1]
20+
21+
def sumRegion(self, start_row: int, start_col: int, end_row: int, end_col: int) -> int:
22+
return self.dp[end_row + 1][end_col + 1] + self.dp[start_row][start_col] - \
23+
self.dp[start_row][end_col + 1] - self.dp[end_row + 1][start_col]

infrastructure/src/db/models.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ def slug(self):
5858

5959
@staticmethod
6060
def to_slug(title: str) -> str:
61-
return '-'.join(re.sub(r'[^\w\- ]', '', title).lower().split())
61+
return '-'.join(re.sub(r'[^\w\- ]', '', title.replace(' - ', ' ')).lower().split())
6262

6363
@property
6464
def solutions(self) -> Generator:
0 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)