package algorithmStudy;
public class Test56 {
public static void main(String[] args) {
Solution56 sol = new Solution56();
int[][] input = {{1, 3}, {2, 6}, {8, 10}, {15, 18}, {10, 12}, {20,23}};
int[][] output = sol.merge(input);
for(int i = 0; i < output.length; i++)
{
System.out.println(output[i][0] + ", " + output[i][1]);
}
System.out.println();
int[][] input2 = {{1, 4}, {2, 3}};
int[][] output2 = sol.merge(input2);
for(int i = 0; i < output2.length; i++)
{
System.out.println(output2[i][0] + ", " + output2[i][1]);
}
}
}
class Solution56 {
public int[][] merge(int[][] intervals) {
if(intervals == null) return null;
int[][] temp = null;
int[] curr = new int[2];
int[] next = new int[2];
for(int i = 0; i < intervals.length - 1; i++)
{
curr = intervals[i];
for(int j = i + 1; j < intervals.length; j++)
{
next = intervals[j];
if((curr[0] >= next[0] && curr[0] <= next[1]) || (curr[1] >= next[0] && curr[1] <= next[1])
|| (curr[0] <= next[0] && curr[1] >= next[1]) || (next[0] <= curr[0] && next[1] >= curr[1]))
{
int startNum = curr[0] <= next[0] ? curr[0] : next[0];
int endNum = curr[1] >= next[1] ? curr[1] : next[1];
temp = new int[intervals.length-1][2];
temp[0][0] = startNum;
temp[0][1] = endNum;
int index = 1;
for(int k = 0; k < intervals.length; k++)
{
if(k != i && k != j)
{
temp[index] = intervals[k];
index++;
}
}
intervals = temp;
i--;
break;
}
else {
temp = intervals;
}
}
}
return temp;
}
}