已知:
原题题意是,给定两个集合,每个集合中有类似 [1,2] 这样的时间段,找出两个集合中共同的时间段,比如说集合一包含 [1,10] ,集合二包含 [2,11] , 则结果肯定包含 [2,10]
思路:
题目特意表明了不存在非法时间段,且本身已经按照顺序给出。思路就是,两个集合进行遍历,集合A的元素和集合B的元素但凡有共同时间的,就输出,将所有输出汇总,就是最终答案。
/** * Definition of Interval: * public classs Interval { * int start, end; * Interval(int start, int end) { * this.start = start; * this.end = end; * } */ public class Solution { /** * @param seqA: the list of intervals * @param seqB: the list of intervals * @return: the time periods */ public List<Interval> timeIntersection(List<Interval> seqA, List<Interval> seqB) { List<Interval> ret = new ArrayList<Interval>(); for (Interval i1 : seqA) { for (Interval i2 : seqB) { Interval i = calculate(i1, i2); if (!(i.start == 0 && i.end == 0)) { ret.add(i); } } } return ret; } private Interval calculate(Interval i1, Interval i2) { if (i1.start > i2.end || i1.end < i2.start) { return new Interval(0, 0); } return new Interval(i1.start > i2.start ? i1.start : i2.start, i1.end < i2.end ? i1.end : i2.end); } }