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