593. Valid Square

ๆ นๆฎๅˆไธญๅ‡ ไฝ•็š„็Ÿฅ่ฏ†ๅฏไปฅ็Ÿฅ้“ๆญฃๆ–นๅฝข็š„ๅ››ๆก่พน็›ธ็ญ‰๏ผŒไธคๆกๅฏน่ง’็บฟ็›ธ็ญ‰๏ผŒๆปก่ถณ่ฟ™ไธคไธชๆกไปถ็š„ๅ››่พนๅฝขไธ€ๅฎšๆ˜ฏๆญฃๆ–นๅฝขใ€‚

้‚ฃไนˆ่ฟ™ๆ ทๅฐฑๅฅฝๅŠžไบ†๏ผŒๅช้œ€่ฆๅฏนๅ››ไธช็‚น๏ผŒไธคไธคไน‹้—ด็ฎ—่ท็ฆป๏ผŒๅฆ‚ๆžœ่ฎก็ฎ—ๅ‡บๆŸไธคไธช็‚นไน‹้—ด่ท็ฆปไธบ0๏ผŒ
่ฏดๆ˜Žไธค็‚น้‡ๅˆไบ†๏ผŒ็›ดๆŽฅ่ฟ”ๅ›ž false๏ผŒ

ๅฆ‚ๆžœไธไธบ0๏ผŒ้‚ฃไนˆๅฐฑๅปบ็ซ‹่ท็ฆปๅ’Œๅ…ถๅ‡บ็Žฐๆฌกๆ•ฐไน‹้—ด็š„ๆ˜ ๅฐ„๏ผŒๆœ€ๅŽๅฆ‚ๆžœๆˆ‘ไปฌๅชๅพ—ๅˆฐไบ† ไธคไธชไธๅŒ ็š„่ท็ฆป้•ฟๅบฆ๏ผŒ
้‚ฃไนˆๅฐฑ่ฏดๆ˜Žๆ˜ฏๆญฃๆ–นๅฝขไบ†

T: O(1)

S: O(1)

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