leetcode 593. Valid Square | 593. 有效的正方形(Java)
生活随笔
收集整理的这篇文章主要介绍了
leetcode 593. Valid Square | 593. 有效的正方形(Java)
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
题目
https://leetcode.com/problems/valid-square/
题解
因为顺序未知,所以可能有四种组合情况。(check时,以四个点顺时针排列为待判断的正方形)
class Solution {public boolean validSquare(int[] p1, int[] p2, int[] p3, int[] p4) {return check(p1, p2, p3, p4) || check(p1, p2, p4, p3) ||check(p1, p3, p2, p4) || check(p1, p3, p4, p2);}public boolean check(int[] A, int[] B, int[] C, int[] D) {if (distance(A, B) != distance(C, D) || distance(A, B) != distance(B, C) ||distance(A, D) != distance(B, C)) return false;// AB⊥ADdouble kAB = slope(A, B);double kAD = slope(A, D);if (kAB == Integer.MAX_VALUE) return kAD == 0;if (kAD == Integer.MAX_VALUE) return kAB == 0;return kAB * kAD - (-1) < 0.0001;}public int distance(int[] A, int[] B) {return (int) (Math.pow(B[1] - A[1], 2) + Math.pow(B[0] - A[0], 2));}public double slope(int[] A, int[] B) {if (B[0] - A[0] == 0) return Integer.MAX_VALUE; // infelse return (double) (B[1] - A[1]) / (B[0] - A[0]);} }总结
以上是生活随笔为你收集整理的leetcode 593. Valid Square | 593. 有效的正方形(Java)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: leetcode 79. Word Se
- 下一篇: leetcode 621. Task S