Untitled

 avatar
unknown
plain_text
17 days ago
1.3 kB
0
Indexable
class Solution {
    public int[][] removeInterval(int[][] intervals, int[] toBeRemoved) {
        // List to store result intervals
        List<int[]> result = new ArrayList<>();
        
        // Iterate through each interval in the input
        for (int[] interval : intervals) {
            // Case 1: Current interval is completely before removal interval
            if (interval[1] <= toBeRemoved[0]) {
                result.add(interval);
            }
            // Case 2: Current interval is completely after removal interval 
            else if (interval[0] >= toBeRemoved[1]) {
                result.add(interval);
            }
            // Case 3: Current interval overlaps with removal interval
            else {
                // Left portion before removal
                if (interval[0] < toBeRemoved[0]) {
                    result.add(new int[]{interval[0], toBeRemoved[0]});
                }
                
                // Right portion after removal
                if (interval[1] > toBeRemoved[1]) {
                    result.add(new int[]{toBeRemoved[1], interval[1]});
                }
            }
        }
        
        // Convert list to 2D array
        return result.toArray(new int[result.size()][]);
    }
}
Leave a Comment