Leetcode - Line Reflection

My code:

public class Solution {
    public boolean isReflected(int[][] points) {
        if (points == null || points.length == 0 || points[0].length != 2) {
            return true;
        }
        
        int max = Integer.MIN_VALUE;
        int min = Integer.MAX_VALUE;
        HashSet<String> set = new HashSet<String>();
        for (int i = 0; i < points.length; i++) {
            max = Math.max(max, points[i][0]);
            min = Math.min(min, points[i][0]);
            String s = points[i][0] + "," + points[i][1];
            set.add(s);
        }
        
        int sum = max + min;
        for (int i = 0; i < points.length; i++) {
            String s = (sum - points[i][0]) + "," + points[i][1];
            if (!set.contains(s)) {
                return false;
            }
        }
        return true;
    }
}

reference:
https://discuss.leetcode.com/topic/48172/simple-java-hashset-solution

自己尝试着做,但是并没做出来。
我搞了个list,还有一个类 Point
然后把所有的点变成point插入list中,然后排序。
然后再用双指针前后比较。以为就是这么简单。发现还有最后一道关卡,会有重复的点。

所以得用 hashset
我想,得用 hashset去重复,然后再遍历插进list,然后再排序,再双指针,太麻烦了。于是就没继续做下去,直接看答案了。
不得不说,答案真的很简洁。
就是对点进行下简单的编码,这比 Point 类好。因为 HashSet 可以去重 String, 但不能去重 Point, 除非Point 自己实现了 Comparable interface

之后也不用排序了。拿到sum
然后取出一个点, (sum - p.x, p.y), 一定是存在于hashset 中的。
一切都是那么的简洁,直接。

Anyway, Good luck, Richardo! -- 09/22/2016

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,789评论 0 33
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,646评论 1 118
  • LeetCode 刷题随手记 - 第一部分 前 256 题(非会员),仅算法题,的吐槽 https://leetc...
    蕾娜漢默阅读 17,984评论 2 36
  • 6500万年前,一颗陨石让恐龙灭绝,但却为哺乳动物开启了一条康庄大道。今天,人类正在让许多物种灭绝,甚至可能包括自己。
    米有人先森阅读 192评论 0 0
  • 故事要从一个普通的小村庄说起: “这是哪,我怎么会在这里。”少年有气无力的说道。 老奶奶面色平和不急不缓的说道:“...
    xiaoxiaoningxia阅读 204评论 0 1