Java 中的有效正方形问题

2025年1月6日 | 3 分钟阅读

这是顶级 IT 公司如谷歌、亚马逊、TCS、埃森哲等面试中经常遇到的问题。通过解决这个问题,可以考察面试者的逻辑能力、批判性思维和解决问题的能力。因此,在本节中,我们将通过不同的方法和逻辑来解决有效正方形问题。此外,我们还将为之创建 Java 程序。

有效正方形问题是一个常见的编码面试问题,涉及确定二维平面上的四个给定点是否可以构成一个正方形。要解决这个问题,需要检查点之间的距离,以确保它们可以构成具有相等边长和相等对角线的正方形。

问题陈述

给定四个点,表示为 (x1, y1), (x2, y2), (x3, y3) 和 (x4, y4),确定这些点是否可以构成一个正方形。

方法

要确定给定点是否构成正方形,我们可以遵循以下步骤:

  1. 计算所有点对之间的平方距离。
  2. 对这些距离进行排序。
  3. 为了使这些点构成正方形,必须满足以下条件:
    • 必须有四个相等的最短距离(正方形的边)。
    • 必须有两个相等的最大距离(正方形的对角线)。
    • 在正方形中,对角线长度应为边长的两倍。

让我们在 Java 程序中实现上述步骤。

文件名:Valid Square.java

输出

 
The given points form a valid square.   

解释

通过不计算平方根,squaredDistance() 函数可以在不产生浮点精度问题的情况下计算两点之间的平方距离。isValidSquare() 方法首先使用该方法计算每对点之间的平方距离,然后对结果进行排序。

它验证最后两个长度(代表对角线)和最初的四个最短距离(代表正方形的边)是否相等。它还保证对角线的长度是边长的两倍。main() 方法通过使用 isValidSquare() 方法打印示例点集是否构成有效正方形。