在 Python 中查找给定 3 个顶点的矩形的第四个顶点的坐标


假设我们有一个大小为 Q * P 的网格,该网格正好包含三个星号 '*',其他每个单元格都包含点 '.',其中 '*' 代表矩形的顶点。我们必须找到缺失顶点的坐标。这里我们将考虑基于 1 的索引。

因此,如果输入类似于 grid = [ ".*.", "...", "*.*" ],则输出将为 [1, 3],这是缺失的坐标。

为了解决这个问题,我们将遵循以下步骤:

  • p := 行数

  • q := 列数

  • row := 为所有行号创建一个映射,关联值为 0

  • col := 为所有列号创建一个映射,关联值为 0

  • 对于范围从 0 到 p 的 i,执行以下操作

    • 对于范围从 0 到 q 的 j,执行以下操作

      • 如果 grid[i, j] 与 '*' 相同,则

        • row[i] := row[i] + 1

        • col[j] := col[j] + 1

    • 对于 row 中的每个 k,v,执行以下操作

      • 如果 v 与 1 相同,则

        • x_coord := k;

    • 对于 col 中的每个 k,v,执行以下操作

      • 如果 v 与 1 相同,则

        • y_coord := k;

  • 返回(x_coord + 1, y_coord + 1)

示例

让我们看看以下实现以获得更好的理解:

实时演示

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))

输入

[".*.", "...", "*.*"]

输出

(1, 3)

更新于: 2020-08-19

647 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告