美文网首页
实现 interval add,求取覆盖范围

实现 interval add,求取覆盖范围

作者: Super_Alan | 来源:发表于2018-04-24 03:48 被阅读0次

    某家店面题目。

    public interface Intervals {
        TreeMap<Integer, Boolean> map = new TreeMap<>();
    
        // add a new interval
        void add(int from, int end) {
            map.put(from, true);
            map.put(to, end);
        }
    
        // get the total coverage covered by intervals
        int getTotalCoveredLength() {
            int totalLen = 0;
            int count = 0;
            int start = 0;
    
            Iterator<Integer, Boolean> iter = map.iterator();
            while(iter.hasNext()) {
                Map.Entry<Integer, Boolean> entry = iter.next();
                if (iter.getValue()) {
                    count++;
                    if (count == 1) {
                        start = iter.getKey();
                    }
                } else {
                    count--;
                }
    
                if (count == 0) {
                    totalLen += iter.getKey() - start;
                }
            }
    
            return totalLen;
        }
    }
    

    相关文章

      网友评论

          本文标题:实现 interval add,求取覆盖范围

          本文链接:https://www.haomeiwen.com/subject/ifhdlftx.html