周赛292
This commit is contained in:
parent
a05df0c450
commit
6786966375
117
src/main/java/contest/y2022/m5/week/Solution292.java
Normal file
117
src/main/java/contest/y2022/m5/week/Solution292.java
Normal file
@ -0,0 +1,117 @@
|
||||
package contest.y2022.m5.week;
|
||||
|
||||
import com.code.leet.entiy.TreeNode;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @description:
|
||||
* @author: Administrator
|
||||
* @date: 2022/5/8 10:29
|
||||
*/
|
||||
public class Solution292 {
|
||||
|
||||
public static void main(String[] args) {
|
||||
Solution292 solution = new Solution292();
|
||||
solution.countTexts("22233");
|
||||
}
|
||||
|
||||
public String largestGoodInteger(String num) {
|
||||
String str = "";
|
||||
for (int i = 9; i >= 0; i--) {
|
||||
str = "" + i + i + i;
|
||||
if (num.contains(str)) {
|
||||
return str;
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public int averageOfSubtree(TreeNode root) {
|
||||
counts(root);
|
||||
sums(root);
|
||||
return count;
|
||||
}
|
||||
|
||||
Queue<Integer> queue = new LinkedList<>();
|
||||
int count = 0;
|
||||
|
||||
private int counts(TreeNode root) {
|
||||
if (root == null) {
|
||||
return 0;
|
||||
}
|
||||
int cnt = counts(root.left) + counts(root.right) + 1;
|
||||
queue.add(cnt);
|
||||
return cnt;
|
||||
}
|
||||
|
||||
private int sums(TreeNode root) {
|
||||
if (root == null) {
|
||||
return 0;
|
||||
}
|
||||
int sum = root.val;
|
||||
sum += sums(root.left);
|
||||
sum += sums(root.right);
|
||||
if (sum / queue.poll() == root.val) {
|
||||
count++;
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
public int countTexts(String pressedKeys) {
|
||||
int[] cnts = new int[pressedKeys.length() + 1];
|
||||
cnts[0] = 1;
|
||||
cnts[1] = 1;
|
||||
int mod = 1000000007;
|
||||
for (int i = 1; i < pressedKeys.length(); i++) {
|
||||
cnts[i + 1] = cnts[i];
|
||||
if (pressedKeys.charAt(i) == pressedKeys.charAt(i - 1)) {
|
||||
cnts[i + 1] += cnts[i - 1];
|
||||
cnts[i + 1] %= mod;
|
||||
if (i > 1 && pressedKeys.charAt(i) == pressedKeys.charAt(i - 2)) {
|
||||
cnts[i + 1] += cnts[i - 2];
|
||||
cnts[i + 1] %= mod;
|
||||
if (i > 2 && pressedKeys.charAt(i) == pressedKeys.charAt(i - 3) && (pressedKeys.charAt(i) == '7' || pressedKeys.charAt(i) == '9')) {
|
||||
cnts[i + 1] += cnts[i - 3];
|
||||
cnts[i + 1] %= mod;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return cnts[pressedKeys.length()];
|
||||
}
|
||||
|
||||
|
||||
public boolean hasValidPath(char[][] grid) {
|
||||
xl = grid.length;
|
||||
yl = grid[0].length;
|
||||
return dfs(grid, 0, 0, 0);
|
||||
}
|
||||
|
||||
Set<String> set = new HashSet<>();
|
||||
int xl;
|
||||
int yl;
|
||||
|
||||
private boolean dfs(char[][] grid, int x, int y, int cnt) {
|
||||
String s = "" + x + "-" + y + "-" + cnt;
|
||||
if (set.contains(s)) {
|
||||
return false;
|
||||
}
|
||||
set.add(s);
|
||||
if (x >= xl || y >= yl) {
|
||||
return false;
|
||||
}
|
||||
if (grid[x][y] == '(') {
|
||||
cnt++;
|
||||
} else {
|
||||
cnt--;
|
||||
}
|
||||
if (cnt < 0 || xl + yl - x - y < cnt) {
|
||||
return false;
|
||||
}
|
||||
if (x == xl - 1 && y == yl - 1 && cnt == 0) {
|
||||
return true;
|
||||
}
|
||||
return dfs(grid, x + 1, y, cnt) || dfs(grid, x, y + 1, cnt);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user