Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.*;
- public class Solution {
- public List<Integer> amountPainted(List<int[]> paint) {
- List<Integer> res = new ArrayList<>();
- Map<Integer, Integer> 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<Integer> amountPainted1(List<int[]> paint) {
- TreeSet<Integer> 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<paint.size(); ++i) {
- int left = paint.get(i)[0], right = paint.get(i)[1];
- while (true) {
- int next = unpainted.ceiling(left);
- if (next >= right)
- break;
- unpainted.remove(next);
- ans[i]++;
- }
- }
- return Arrays.asList(ans);
- }
- public static void main(String[] args) {
- Solution solution = new Solution();
- List<int[]> paint = new ArrayList<>();
- paint.add(new int[]{1, 4});
- paint.add(new int[]{2, 5});
- paint.add(new int[]{9, 10});
- List<Integer> result = solution.amountPainted(paint);
- System.out.println(result);
- System.out.println(solution.amountPainted1(paint));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement