593. Valid Square
ๆ นๆฎๅไธญๅ ไฝ็็ฅ่ฏๅฏไปฅ็ฅ้ๆญฃๆนๅฝข็ๅๆก่พน็ธ็ญ๏ผไธคๆกๅฏน่ง็บฟ็ธ็ญ๏ผๆปก่ถณ่ฟไธคไธชๆกไปถ็ๅ่พนๅฝขไธๅฎๆฏๆญฃๆนๅฝขใ
้ฃไน่ฟๆ ทๅฐฑๅฅฝๅไบ๏ผๅช้่ฆๅฏนๅไธช็น๏ผไธคไธคไน้ด็ฎ่ท็ฆป๏ผๅฆๆ่ฎก็ฎๅบๆไธคไธช็นไน้ด่ท็ฆปไธบ0๏ผ
่ฏดๆไธค็น้ๅไบ๏ผ็ดๆฅ่ฟๅ false๏ผ
ๅฆๆไธไธบ0๏ผ้ฃไนๅฐฑๅปบ็ซ่ท็ฆปๅๅ
ถๅบ็ฐๆฌกๆฐไน้ด็ๆ ๅฐ๏ผๆๅๅฆๆๆไปฌๅชๅพๅฐไบ ไธคไธชไธๅ ็่ท็ฆป้ฟๅบฆ๏ผ
้ฃไนๅฐฑ่ฏดๆๆฏๆญฃๆนๅฝขไบclass Solution {
public boolean validSquare(int[] p1, int[] p2, int[] p3, int[] p4) {
Set<Integer> set = new HashSet<>();
set.add(dist(p1,p2));
set.add(dist(p1,p3));
set.add(dist(p1,p4));
set.add(dist(p2,p3));
set.add(dist(p2,p4));
set.add(dist(p3,p4));
return !set.contains(0) && set.size() == 2;
}
// (x0, y0) and (y0, y1)
// dist = (x0 - x1)^2 + (y0 - y1)^2
private int dist(int[] p1, int[] p2) {
return (p1[0]-p2[0])*(p1[0]-p2[0]) + (p1[1]-p2[1])*(p1[1]-p2[1]);
}
}
/*
[0,0] [1,0], p2 = [1,1], p3 = [1,0], p4 = [0,1]
[0,1] [1,1]
[1,0], p2 = , p3 = [0,1], p4 = [0,-1]
[0,1]
[-1,0] [1,0]
[0,-1]
*/Last updated