diff --git a/src/main/java/com/dota/binarySearch/_1898/Solution.java b/src/main/java/com/dota/binarySearch/_1898/Solution.java new file mode 100644 index 0000000..11a060c --- /dev/null +++ b/src/main/java/com/dota/binarySearch/_1898/Solution.java @@ -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= k; + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/binarySearch/_2576/Solution.java b/src/main/java/com/dota/binarySearch/_2576/Solution.java new file mode 100644 index 0000000..a0b8219 --- /dev/null +++ b/src/main/java/com/dota/binarySearch/_2576/Solution.java @@ -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; + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/binarySearch/_275/Solution.java b/src/main/java/com/dota/binarySearch/_275/Solution.java new file mode 100644 index 0000000..6c3b6a5 --- /dev/null +++ b/src/main/java/com/dota/binarySearch/_275/Solution.java @@ -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; + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/binarySearch/_2982/Solution.java b/src/main/java/com/dota/binarySearch/_2982/Solution.java new file mode 100644 index 0000000..814542e --- /dev/null +++ b/src/main/java/com/dota/binarySearch/_2982/Solution.java @@ -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; + } +} \ No newline at end of file