Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public int minTaps(int n, int[] ranges) {
- List<Range> lranges= new ArrayList<>();
- for(int i =0;i<ranges.length;i++){
- int from = Math.max(0,i - ranges[i]);
- int to = Math.min(n, i + ranges[i]);
- int size = to - from;
- lranges.add(new Range(from,to,size));
- }
- Collections.sort(lranges);
- boolean[] watered = new boolean[n];
- int res = 0;
- for(Range r : lranges){
- boolean updated = false;
- for(int i = r.from;i<r.to;i++){
- if(watered[i] == false){
- updated = true;
- }
- watered[i]=true;
- }
- if(updated){
- res++;
- }
- boolean fin = true;
- for(int i = 0;i<watered.length;i++){
- if(watered[i] == false){
- fin = false;
- break;
- }
- }
- if(fin == true){
- return res;
- }
- }
- return -1;
- }
- class Range implements Comparable<Range>{
- int from;
- int to;
- int size;
- public Range(int from, int to, int size) {
- this.from=from;
- this.to = to;
- this.size=size;
- }
- public int compareTo(Range other){
- return other.size - size;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement