Advertisement
thewitchking

Untitled

Dec 14th, 2023
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.03 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.HashMap;
  3. import java.util.List;
  4. import java.util.*;
  5.  
  6. public class Solution {
  7.  
  8.     public List<Integer> amountPainted(List<int[]> paint) {
  9.         List<Integer> res = new ArrayList<>();
  10.         Map<Integer, Integer> painted = new HashMap<>();
  11.  
  12.         for (int[] interval : paint) {
  13.             int start = interval[0];
  14.             int end = interval[1];
  15.             int work = 0;
  16.  
  17.             while (start < end) {
  18.                 if (painted.containsKey(start)) {
  19.                     int prevEnd = painted.get(start);
  20.  
  21.                     painted.put(start, Math.max(painted.get(start), end));
  22.                     start = prevEnd;
  23.                 } else {
  24.                     painted.put(start, end);
  25.                     start++;
  26.                     work++;
  27.                 }
  28.             }
  29.  
  30.             res.add(work);
  31.         }
  32.  
  33.         return res;
  34.     }
  35.    
  36.     public List<Integer> amountPainted1(List<int[]> paint) {
  37.         TreeSet<Integer> unpainted = new TreeSet<>();
  38.         Integer [] ans = new Integer[paint.size()];
  39.        
  40.         Arrays.fill(ans,0);
  41.         for (int i = 0; i <= 50000; i++) {
  42.             unpainted.add(i);
  43.         }
  44.        
  45.         for (int i=0;i<paint.size(); ++i) {
  46.            
  47.             int left = paint.get(i)[0], right = paint.get(i)[1];
  48.             while (true) {
  49.                 int next = unpainted.ceiling(left);
  50.                 if (next >= right)
  51.                     break;
  52.                 unpainted.remove(next);
  53.                 ans[i]++;
  54.             }
  55.         }
  56.         return Arrays.asList(ans);
  57.     }
  58.  
  59.     public static void main(String[] args) {
  60.         Solution solution = new Solution();
  61.         List<int[]> paint = new ArrayList<>();
  62.         paint.add(new int[]{1, 4});
  63.         paint.add(new int[]{2, 5});
  64.         paint.add(new int[]{9, 10});
  65.  
  66.         List<Integer> result = solution.amountPainted(paint);
  67.         System.out.println(result);
  68.         System.out.println(solution.amountPainted1(paint));
  69.     }
  70. }
  71.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement