Advertisement
lifeiteng

683. K Empty Slots

Sep 10th, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.08 KB | None | 0 0
  1. class Solution {
  2.     public int kEmptySlots(int[] flowers, int k) {
  3.         int n = flowers.length, inf = Integer.MAX_VALUE, re = inf;
  4.         int[] days = new int[n];
  5.         for(int i = 0; i < n; i++) days[flowers[i] - 1] = i + 1;
  6.         int L = 0, R = L + k + 1;
  7.         for(int i = 0; i < n; i++)
  8.         {
  9.             if(R >= n) break;
  10.             if(i == R) re = Math.min(re, Math.max(days[L], days[R]));
  11.             if(days[i] < days[L] || days[i] < days[R])
  12.             {
  13.                 L = i;
  14.                 R = L + k + 1;
  15.             }
  16.         }
  17.         return re == inf ? -1 : re;
  18.     }
  19.    
  20.     public int kEmptySlots1(int[] flowers, int k) {
  21.         int n = flowers.length;
  22.         TreeSet<Integer> set = new TreeSet<>();
  23.         for(int i = 0; i < n; i++)
  24.         {
  25.             int d = flowers[i];
  26.             Integer ceil = set.ceiling(d), floor = set.floor(d);
  27.             if(ceil != null && ceil - d - 1 == k) return i + 1;
  28.             if(floor != null && d - floor - 1 == k) return i + 1;
  29.             set.add(d);
  30.         }
  31.         return -1;
  32.     }
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement