Cho lưới Q x P chứa đúng 3 dấu '*' (đỉnh hình chữ nhật), các ô khác là '.'. Tìm tọa độ đỉnh còn thiếu (chỉ số 1-based).
Ví dụ: grid = [".*.", "...", "*.*"] → [1, 3].
Giải thuật
- Đếm số lần xuất hiện '*' trên mỗi hàng và mỗi cột.
- Hàng xuất hiện 1 lần là hàng của đỉnh thiếu.
- Cột xuất hiện 1 lần là cột của đỉnh thiếu.
- Trả về (hàng+1, cột+1).
Ví dụ
def get_missing_vertex(grid):
p = len(grid)
q = len(grid[0])
row = {i: 0 for i in range(p)}
col = {j: 0 for j in range(q)}
for i in range(p):
for j in range(q):
if grid[i][j] == '*':
row[i] += 1
col[j] += 1
x_coord = next(k for k, v in row.items() if v == 1)
y_coord = next(k for k, v in col.items() if v == 1)
return (x_coord + 1, y_coord + 1)
grid = [".*.", "...", "*.*"]
print(get_missing_vertex(grid))Đầu vào
[".*.", "...", "*.*"]
Đầu ra
(1, 3)