周赛319
This commit is contained in:
parent
2224c33331
commit
6031542dcb
112
src/main/java/contest/y2022/m11/Week319.java
Normal file
112
src/main/java/contest/y2022/m11/Week319.java
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
package contest.y2022.m11;
|
||||||
|
|
||||||
|
import com.code.leet.entiy.TreeNode;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
public class Week319 {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Week319 solution = new Week319();
|
||||||
|
String s = "rzdtuheehuolxbhcychbpmcmxxxxxxiywqwyierjsuusjreunvvnu";
|
||||||
|
int k = 4;
|
||||||
|
System.out.println(solution.maxPalindromes(s, k));
|
||||||
|
}
|
||||||
|
|
||||||
|
public int maxPalindromes(String s, int k) {
|
||||||
|
if (k == 1) {
|
||||||
|
return s.length();
|
||||||
|
}
|
||||||
|
nums = new int[s.length()];
|
||||||
|
max = 0;
|
||||||
|
dfs(s, 0, k, 0);
|
||||||
|
return max;
|
||||||
|
}
|
||||||
|
|
||||||
|
int[] nums;
|
||||||
|
int max;
|
||||||
|
|
||||||
|
private void dfs(String s, int index, int k, int num) {
|
||||||
|
if (index == s.length() || s.length() - index < k) {
|
||||||
|
max = Math.max(max, num);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
nums[index] = Math.max(nums[index], num);
|
||||||
|
String tmp = s.substring(index + k - 1);
|
||||||
|
int i = tmp.indexOf(s.charAt(index));
|
||||||
|
if (i >= 0) {
|
||||||
|
StringBuilder sb = new StringBuilder(s.substring(index, index + k + i));
|
||||||
|
if (sb.toString().equals(sb.reverse().toString())) {
|
||||||
|
if (nums[index + k + i - 1] < num + 1) {
|
||||||
|
nums[index + k + i - 1] = num + 1;
|
||||||
|
dfs(s, index + k + i, k, num + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dfs(s, index + 1, k, num);
|
||||||
|
}
|
||||||
|
//--------------------------
|
||||||
|
public int minimumOperations(TreeNode root) {
|
||||||
|
Queue<TreeNode> queue = new LinkedList<>();
|
||||||
|
queue.add(root);
|
||||||
|
int res = 0;
|
||||||
|
while (!queue.isEmpty()) {
|
||||||
|
List<Integer> list = new ArrayList<>();
|
||||||
|
List<Integer> sort = new ArrayList<>();
|
||||||
|
int size = queue.size();
|
||||||
|
for (int i = 0; i < size; i++) {
|
||||||
|
TreeNode node = queue.poll();
|
||||||
|
list.add(node.val);
|
||||||
|
sort.add(node.val);
|
||||||
|
Collections.sort(sort);
|
||||||
|
List<Integer> tl = new ArrayList<>();
|
||||||
|
List<Integer> ts = new ArrayList<>();
|
||||||
|
for (int j = 0; j < list.size(); j++) {
|
||||||
|
if (list.get(j) != sort.get(j)) {
|
||||||
|
tl.add(list.get(j));
|
||||||
|
ts.add(sort.get(j));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (node.left != null) {
|
||||||
|
queue.add(node.left);
|
||||||
|
}
|
||||||
|
if (node.right != null) {
|
||||||
|
queue.add(node.right);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
//----------------------------
|
||||||
|
public int subarrayLCM(int[] nums, int k) {
|
||||||
|
int res = 0;
|
||||||
|
for (int i = 0; i < nums.length; i++) {
|
||||||
|
int tmp = 1;
|
||||||
|
for (int j = i; j < nums.length; j++) {
|
||||||
|
tmp = getCM(tmp, nums[j]);
|
||||||
|
if (tmp > k) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (tmp == k) {
|
||||||
|
res += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getCM(int m, int n) {
|
||||||
|
int max = Math.max(m, n);
|
||||||
|
for (int i = max; i <= m * n; i++) {
|
||||||
|
if (i % m == 0 && i % n == 0) {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
//--------------------
|
||||||
|
public double[] convertTemperature(double celsius) {
|
||||||
|
return new double[]{celsius + 273.15, celsius * 1.8 + 32};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user