This commit is contained in:
kkunkka
2025-05-29 12:14:38 +08:00
parent 3926831f69
commit 934dfce0cc
5 changed files with 157 additions and 0 deletions

View File

@@ -0,0 +1,37 @@
package com.dota.binarySearch._1898;
class Solution {
public static void main(String[] args) {
new Solution().maximumRemovals("qlevcvgzfpryiqlwy", "qlecfqlw", new int[]{12,5});
}
public int maximumRemovals(String s, String p, int[] removable) {
int l = 0, r= removable.length + 1;
while(l+1<r) {
int mid = l+(r-l)/2;
if (check(s, p, removable, mid)) {
l = mid;
} else {
r = mid;
}
}
return l;
}
boolean check(String s, String p, int[] removable, int k) {
var cs = s.toCharArray();
for (int i = 0; i < k; i++) {
cs[removable[i]] = 0;
}
int l = 0;
for (char c : cs) {
if (c==p.charAt(l)) {
l++;
}
if (l==p.length()) {
return true;
}
}
return false;
}
}

View File

@@ -0,0 +1,39 @@
package com.dota.binarySearch._2226;
class Solution {
public int maximumCandies(int[] candies, long k) {
long sum = 0;
int min = candies[0];
for (int candy : candies) {
min = Math.max(min, candy);
sum += candy;
}
if (sum < k) {
return 0;
}
if (sum == k) {
return 1;
}
int l = 0, r = min + 1;
while (l + 1 < r) {
int mid = l + (r - l) / 2;
if (check(candies, k, mid)) {
l = mid;
} else {
r = mid;
}
}
return l;
}
// k个小孩每个x个
boolean check(int[] candies, long k, int x) {
long sum = 0;
for (int candy : candies) {
sum += candy / x;
}
return sum >= k;
}
}

View File

@@ -0,0 +1,21 @@
package com.dota.binarySearch._2576;
import java.util.Arrays;
class Solution {
public int maxNumOfMarkedIndices(int[] nums) {
Arrays.sort(nums);
int res = 0;
int mid = nums.length / 2;
int l = 0, r = mid + 1;
while (l < mid && r < nums.length) {
if (2*nums[l]<=nums[r]) {
res+=2;
l++;r++;
}else {
r++;
}
}
return res;
}
}

View File

@@ -0,0 +1,17 @@
package com.dota.binarySearch._275;
class Solution {
public int hIndex(int[] citations) {
int l = 0, r = citations.length - 1;
if (citations[r] == 0) return 0;
while (l < r) {
int mid = l + (r - l) / 2;
if (citations.length-mid > citations[mid]) {
l = mid + 1;
} else {
r = mid;
}
}
return citations.length - r;
}
}

View File

@@ -0,0 +1,43 @@
package com.dota.binarySearch._2982;
class Solution {
public static void main(String[] args) {
new Solution().maximumLength("abcaba");
}
public int maximumLength(String s) {
int l = -1, r = s.length();
while (l + 1 < r) {
int mid = l + (r - l) / 2;
if (check(s, mid)) {
l = mid;
} else {
r = mid;
}
}
return l==0?-1:l;
}
boolean check(String s, int k) {
var cs = s.toCharArray();
var sum = new int[26];
var dp = new int[26];
for (int i = 0; i < k; i++) {
dp[cs[i] - 'a']++;
}
if (dp[cs[0] - 'a'] == k) sum[cs[0]-'a'] = 1;
int l = 0, r = k;
while (r < s.length()) {
dp[cs[l] - 'a']--;
l++;
dp[cs[r] - 'a']++;
if (dp[cs[r] - 'a'] == k) {
sum[cs[r]-'a']++;
if (sum[cs[r]-'a'] >= 3) {
return true;
}
}
r++;
}
return false;
}
}