美文网首页
实现 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