import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.*; public class Solution { public List amountPainted(List paint) { List res = new ArrayList<>(); Map painted = new HashMap<>(); for (int[] interval : paint) { int start = interval[0]; int end = interval[1]; int work = 0; while (start < end) { if (painted.containsKey(start)) { int prevEnd = painted.get(start); painted.put(start, Math.max(painted.get(start), end)); start = prevEnd; } else { painted.put(start, end); start++; work++; } } res.add(work); } return res; } public List amountPainted1(List paint) { TreeSet unpainted = new TreeSet<>(); Integer [] ans = new Integer[paint.size()]; Arrays.fill(ans,0); for (int i = 0; i <= 50000; i++) { unpainted.add(i); } for (int i=0;i= right) break; unpainted.remove(next); ans[i]++; } } return Arrays.asList(ans); } public static void main(String[] args) { Solution solution = new Solution(); List paint = new ArrayList<>(); paint.add(new int[]{1, 4}); paint.add(new int[]{2, 5}); paint.add(new int[]{9, 10}); List result = solution.amountPainted(paint); System.out.println(result); System.out.println(solution.amountPainted1(paint)); } }