实现 interval add,求取覆盖范围

某家店面题目。

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

推荐阅读更多精彩内容