成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

356. Line Reflection

fireflow / 2030人閱讀

摘要:實際上這題的要求是所有點的關(guān)于一個軸對稱,坐標(biāo)左右全部對稱,就是說就是對的,但是就不對,因為沒有和它對稱的點。也是對的,都是關(guān)于這個軸對稱??戳死锩嬷苯佑眉由戏指舴麃肀硎军c,這樣不用自己定義簡單點。

356. Line Reflection

題目鏈接:https://leetcode.com/problems...

這題給的例子太神了根本看不懂。實際上這題的要求是所有點的關(guān)于一個y軸對稱,x坐標(biāo)左右全部對稱,就是說[[-1,1], [1, 1], [3, 1], [-3, 1]]就是對的,但是[[1, 1], [3, 1], [-3, 1]]就不對,因為[1, 1]沒有和它對稱的點。[[1, 1], [3, 1]]也是對的,這時候x坐標(biāo)關(guān)于x = 2對稱。[[-1, 1], [1, 1], [-2, -1], [2, -1]]也是對的,都是關(guān)于x = 0這個y軸對稱。
那么關(guān)鍵就是要求一下對稱軸,x最大值和最小值的中點就是對稱軸,先用hashset存一下所有的點,然后根據(jù)對稱軸找對稱點是否在set里面,從而判斷是否正確。x1 - pivot == pivot - x2, x1 > x2。

public class Solution {
    public boolean isReflected(int[][] points) {
        if(points.length == 0) return true;
        //  x value and y value
        Set set = new HashSet();
        
        int min = Integer.MAX_VALUE, max = Integer.MIN_VALUE;
        for(int[] point : points) {
            set.add(new Point(point[0], point[1]));
            min = Math.min(min, point[0]);
            max = Math.max(max, point[0]);
        }
        int d = min + max;
        for(int[] point : points) {
            if(!set.contains(new Point(d - point[0], point[1]))) return false;
        }
        return true;
    }
    
    class Point {
        int x; int y;
        Point(int x, int y) { this.x = x; this.y = y; }
        @Override
        public int hashCode() { return this.x * this.y; }
        @Override 
        public boolean equals(Object o) { 
            if(!(o instanceof Point)) return false;
            Point p = (Point) o;
            return this.x == p.x && this.y == p.y; 
        }
    }
}

看了discussion里面直接用string加上分隔符來表示點,這樣不用自己定義class簡單點。

public class Solution {
    public boolean isReflected(int[][] points) {
        if(points.length == 0) return true;
        //  x value and y value
        Set set = new HashSet();
        
        int min = Integer.MAX_VALUE, max = Integer.MIN_VALUE;
        for(int[] point : points) {
            set.add(point[0] + "#" + point[1]);
            min = Math.min(min, point[0]);
            max = Math.max(max, point[0]);
        }
        int d = min + max;
        for(int[] point : points) {
            if(!set.contains(d - point[0] + "#" + point[1])) return false;
        }
        return true;
    }
    
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/66663.html

相關(guān)文章

  • Leetcode 356. Line Reflection

    摘要:題目解法這道題主要是判斷個點是否沿某條線對稱,可以從提示看出來所有的點應(yīng)該要滿足所以先把所有的點掃一遍存下來,找到和然后再掃一遍,判定是否點都是延直線對稱的。時間復(fù)雜度空間復(fù)雜度代碼 題目: Given n points on a 2D plane, find if there is such a line parallel to y-axis that reflect the gi...

    ivyzhang 評論0 收藏0
  • 356. Line Reflection

    摘要:問題解答這個解法是看的里的,看著簡單,但想到很難。我們要求是不是對稱,就是要求每一個點是不是有個點跟它對應(yīng)。因為可以一個點重復(fù)出現(xiàn),決定我們用來做。記錄每一個出現(xiàn)的點,然后再用來找其對應(yīng)的點。 問題:Given n points on a 2D plane, find if there is such a line parallel to y-axis that reflect the...

    ranwu 評論0 收藏0
  • Laravel學(xué)習(xí)筆記之PHP反射(Reflection) (上)

    摘要:說明中經(jīng)常使用的反射特性來設(shè)計代碼,本文主要學(xué)習(xí)的反射特性,來提高寫代碼時的設(shè)計質(zhì)量。提供一套檢測的兩個工具包和,類似于探針一樣的東西來探測這些一等公民。限于篇幅,下篇再聊下反射。 說明:Laravel中經(jīng)常使用PHP的反射特性來設(shè)計代碼,本文主要學(xué)習(xí)PHP的反射特性,來提高寫代碼時的設(shè)計質(zhì)量。PHP提供一套檢測class, interface, trait, property, me...

    JessYanCoding 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<