Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public int kEmptySlots(int[] flowers, int k) {
- int n = flowers.length, inf = Integer.MAX_VALUE, re = inf;
- int[] days = new int[n];
- for(int i = 0; i < n; i++) days[flowers[i] - 1] = i + 1;
- int L = 0, R = L + k + 1;
- for(int i = 0; i < n; i++)
- {
- if(R >= n) break;
- if(i == R) re = Math.min(re, Math.max(days[L], days[R]));
- if(days[i] < days[L] || days[i] < days[R])
- {
- L = i;
- R = L + k + 1;
- }
- }
- return re == inf ? -1 : re;
- }
- public int kEmptySlots1(int[] flowers, int k) {
- int n = flowers.length;
- TreeSet<Integer> set = new TreeSet<>();
- for(int i = 0; i < n; i++)
- {
- int d = flowers[i];
- Integer ceil = set.ceiling(d), floor = set.floor(d);
- if(ceil != null && ceil - d - 1 == k) return i + 1;
- if(floor != null && d - floor - 1 == k) return i + 1;
- set.add(d);
- }
- return -1;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement