Giả sử chúng ta có một lưới kích thước Q * P, lưới này chứa chính xác ba dấu hoa thị '*' và mọi ô khác đều có dấu chấm '.', Trong đó '*' là đỉnh của hình chữ nhật. Chúng ta phải tìm tọa độ của đỉnh còn thiếu. Ở đây chúng tôi sẽ xem xét lập chỉ mục dựa trên 1.
Vì vậy, nếu đầu vào giống như grid =[". *.", "...", "*. *"], Thì đầu ra sẽ là [1, 3], đây là tọa độ bị thiếu.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
p:=số hàng
-
q:=số cột
-
row:=tạo bản đồ cho tất cả số hàng và giá trị được kết hợp là 0
-
col:=tạo bản đồ cho tất cả số cột và giá trị được kết hợp là 0
-
đối với tôi trong phạm vi từ 0 đến p, thực hiện
-
đối với j trong phạm vi từ 0 đến q, thực hiện
-
nếu lưới [i, j] giống với '*', thì
-
row [i]:=row [i] + 1
-
col [j]:=col [j] + 1
-
-
-
đối với mỗi k, v trong hàng, thực hiện
-
nếu v giống 1 thì
-
x_coord:=k;
-
-
-
cho mỗi k, v trong col, do
-
nếu v giống 1 thì
-
y_coord:=k;
-
-
-
-
return (x_coord + 1, y_coord + 1)
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
def get_missing_vertex(grid) : p = len(grid) q = len(grid[0]) row = dict.fromkeys(range(p), 0) col = dict.fromkeys(range(q), 0) for i in range(p) : for j in range(q) : if (grid[i][j] == '*') : row[i] += 1 col[j] += 1 for k,v in row.items() : if (v == 1) : x_coord = k; for k,v in col.items() : if (v == 1) : y_coord = k; return (x_coord + 1, y_coord + 1) grid = [".*.", "...", "*.*"] print(get_missing_vertex(grid))
Đầu vào
[".*.", "...", "*.*"]
Đầu ra
(1, 3)