kk
This commit is contained in:
37
src/main/java/com/dota/binarySearch/_1898/Solution.java
Normal file
37
src/main/java/com/dota/binarySearch/_1898/Solution.java
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
39
src/main/java/com/dota/binarySearch/_2226/Solution.java
Normal file
39
src/main/java/com/dota/binarySearch/_2226/Solution.java
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
21
src/main/java/com/dota/binarySearch/_2576/Solution.java
Normal file
21
src/main/java/com/dota/binarySearch/_2576/Solution.java
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
17
src/main/java/com/dota/binarySearch/_275/Solution.java
Normal file
17
src/main/java/com/dota/binarySearch/_275/Solution.java
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
43
src/main/java/com/dota/binarySearch/_2982/Solution.java
Normal file
43
src/main/java/com/dota/binarySearch/_2982/Solution.java
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user