📄 mergeIntervals.py
/home/palash/git/misc/python/mergeIntervals.py
Language: py • Lines: 83
'''
     *  Given an array of intervals where intervals[i] = [starti, endi], merge all overlapping intervals, and return an array of the non-overlapping intervals that cover all the intervals in the input.
 
Example 1:
Input: intervals = [[1,3],[2,6],[8,10],[15,18]]
Output: [[1,6],[8,10],[15,18]]
Explanation: Since intervals [1,3] and [2,6] overlap, merge them into [1,6].

[1,3], [1,5]

[1, 5],[2,5]
[1, 5],[5,10]

[[1,3],[8,10],[2,6],[15,18]]
     * 
     * If unsorted, the algo goes for O(n^2)
     * 
     * If sort, the algo goes for O(nLogn)
     * 
     * Element[i+1].startI >= element[i].startI && elemet[i+1].startI <= element[i].endI
     * element[i].startI, element[i+1].endI
     */
'''

input = [[1,3],[2,6],[8,10],[15,18]]
input = [[1,5], [2,7], [2,10], [12, 15]]

input.sort()

length = len(input)

intervals = []

'''
while 0 ... n{
    mergeSegment.startI = input[i][0]
    mergeSegment.endI = input[i][1]
    
    while j ... n -1 {
        if input[j][0] >= mergeSegment.startI and input[j][0] <= mergeSegment.endI:
            mergeSegment.endI = input[j][1]
            j++
        else:
            break;
    }

    intervals.append([mergeSegment.startI, mergeSegment.endI])
}

'''
i = 0
mergeSegment = {}
while i < length:
    mergeSegment['startI'] = input[i][0]
    mergeSegment['endI'] = input[i][1]

    j = i
    print(i)
    while j < length - 1:
        print(j)
        if input[j][0] >= mergeSegment['startI'] and input[j][0] <= mergeSegment['endI']:
            print("If")
            mergeSegment['endI'] = input[j][1]
            j += 1
        else:
            print("else")
            j=j+1
            break
        #i = i + 1
    i = i + 1
    intervals.append([mergeSegment['startI'], mergeSegment['endI']])

'''
for i in range(0, length-1):
    if input[i + 1][0] >= input[i][0] and input[i + 1][0] <= input[i][1]:
        interval = [input[i][0], input[i+1][1]]
        intervals.append(interval)
        i = i + 1
    else:
        intervals.append(input[i])
'''

print(intervals)