leetcode 593. Valid Square | 593. 有效的正方形(Java)

深藏阁楼爱情的钟 2022-09-14 12:29 272阅读 0赞

题目

https://leetcode.com/problems/valid-square/
在这里插入图片描述

题解

因为顺序未知,所以可能有四种组合情况。(check时,以四个点顺时针排列为待判断的正方形)

  1. class Solution {
  2. public boolean validSquare(int[] p1, int[] p2, int[] p3, int[] p4) {
  3. return check(p1, p2, p3, p4) || check(p1, p2, p4, p3) ||
  4. check(p1, p3, p2, p4) || check(p1, p3, p4, p2);
  5. }
  6. public boolean check(int[] A, int[] B, int[] C, int[] D) {
  7. if (distance(A, B) != distance(C, D) || distance(A, B) != distance(B, C) ||
  8. distance(A, D) != distance(B, C)) return false;
  9. // AB⊥AD
  10. double kAB = slope(A, B);
  11. double kAD = slope(A, D);
  12. if (kAB == Integer.MAX_VALUE) return kAD == 0;
  13. if (kAD == Integer.MAX_VALUE) return kAB == 0;
  14. return kAB * kAD - (-1) < 0.0001;
  15. }
  16. public int distance(int[] A, int[] B) {
  17. return (int) (Math.pow(B[1] - A[1], 2) + Math.pow(B[0] - A[0], 2));
  18. }
  19. public double slope(int[] A, int[] B) {
  20. if (B[0] - A[0] == 0) return Integer.MAX_VALUE; // inf
  21. else return (double) (B[1] - A[1]) / (B[0] - A[0]);
  22. }
  23. }

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,272人围观)

还没有评论,来说两句吧...

相关阅读

    相关 593 有效正方形

    1. 问题描述: 给定二维空间中四点的坐标,返回四点是否可以构造一个正方形。一个点的坐标(x,y)由一个有两个整数的整数数组表示。 示例: 输入: p1 = \[0,0\