kk
This commit is contained in:
27
src/main/java/com/dota/binarySearch/_1642/Solution.java
Normal file
27
src/main/java/com/dota/binarySearch/_1642/Solution.java
Normal file
@@ -0,0 +1,27 @@
|
||||
package com.dota.binarySearch._1642;
|
||||
|
||||
import java.util.PriorityQueue;
|
||||
|
||||
class Solution {
|
||||
public int furthestBuilding(int[] heights, int bricks, int ladders) {
|
||||
var p = new PriorityQueue<Integer>((a, b) -> b - a);
|
||||
int n = heights.length;
|
||||
for (int i = 1; i < n; i++) {
|
||||
var diff = heights[i] - heights[i - 1];
|
||||
if (diff <= 0) continue;
|
||||
|
||||
p.offer(diff);
|
||||
if (bricks >= diff) {
|
||||
bricks -= diff;
|
||||
} else if (ladders > 0) {
|
||||
ladders--;
|
||||
bricks += p.poll();
|
||||
bricks -= diff;
|
||||
if (bricks < 0) return i - 1;
|
||||
} else {
|
||||
return i - 1;
|
||||
}
|
||||
}
|
||||
return n - 1;
|
||||
}
|
||||
}
|
32
src/main/java/com/dota/binarySearch/_1802/Solution.java
Normal file
32
src/main/java/com/dota/binarySearch/_1802/Solution.java
Normal file
@@ -0,0 +1,32 @@
|
||||
package com.dota.binarySearch._1802;
|
||||
|
||||
class Solution {
|
||||
public int maxValue(int n, int index, int maxSum) {
|
||||
int l = 1, r = maxSum + 1;
|
||||
while (l + 1 < r) {
|
||||
int mid = l + (r - l) / 2;
|
||||
if (check(n, index, maxSum, mid)) {
|
||||
l = mid;
|
||||
} else {
|
||||
r = mid;
|
||||
}
|
||||
}
|
||||
return l;
|
||||
}
|
||||
|
||||
boolean check(int n, int index, int maxSum, int k) {
|
||||
long sum = 0;
|
||||
int l = Math.max(0, index - k + 1);
|
||||
sum += (long) (k + k - (index - l)) * (index - l + 1) / 2;
|
||||
if (l > 0) {
|
||||
sum += l;
|
||||
}
|
||||
int r = Math.min(index + k - 1, n - 1);
|
||||
sum += (long) (k + k - (r - index)) * (r - index + 1) / 2;
|
||||
if (r < n - 1) {
|
||||
sum += n - r - 1;
|
||||
}
|
||||
sum -= k;
|
||||
return sum <= maxSum;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user