public void addNum(int val) { if (hash.contains(val)) return; hash.add(val); Interval tmp = new Interval(val, val); Interval greater = set.ceiling(tmp); Interval smaller = set.floor(tmp); if (greater != null) { // System.out.println("greater:"+greater.start+" "+greater.end+" val:"+val); if (greater.start == val + 1) { greater.start = val; merge(smaller, greater); return; } } if (smaller != null) { // System.out.println("smaller:"+smaller.start+" "+smaller.end+" val:"+val); if (smaller.end == val - 1) { smaller.end = val; merge(smaller, greater); return; } } set.add(tmp); // for(Interval I : set){ // System.out.print(I.start+" "+I.end+" "); // } // System.out.println(); }