题目链接: Leetcode Weekly Contest 250
写在前面:
本次周赛没有参加,在赛后进行模拟的,做出了前两道。
1、1935. Maximum Number of Words You Can Type
难度:Easy
题目大意:
详见题意。
思路:
按照题意模拟即可。
class Solution {
public int canBeTypedWords(String text, String brokenLetters) {
String[] arr=text.split(" ");
char[] broken=brokenLetters.toCharArray();
int res=0;
for(String s:arr){
boolean flag=true;
for(int i=0;i<s.length();i++){
for(int j=0;j<broken.length;j++){
if(s.charAt(i)==broken[j]){
flag=false;
break;
}
}
if(!flag){
break;
}
}
if(flag){
res++;
}
}
return res;
}
}
2、1936. Add Minimum Number of Rungs
难度:Medium
题目大意:
详见题意。
思路:
按照题意进行模拟,如果不能直接跳到下一个阶梯,就加阶梯,注意细节,判断高度差能否被dist
整除,然后分情况讨论。
代码
class Solution {
public int addRungs(int[] rungs, int dist) {
int res=0;
int diff=rungs[0];
if(diff>dist){
if(diff%dist==0){
res+=((diff-dist)/dist);
}
else{
res+=((diff-dist)/dist+1);
}
}
for(int i=1;i<rungs.length;i++){
diff=rungs[i]-rungs[i-1];
if(diff>dist){
if(diff%dist==0){
res+=((diff-dist)/dist);
}
else{
res+=((diff-dist)/dist+1);
}
}
}
return res;
}
}
3、1937. Maximum Number of Points with Cost
难度:Medium
题目大意:
详见题意。
思路:
动态规划问题,假设
d
p
[
i
]
[
j
]
dp[i][j]
dp[i][j]表示到达
p
o
i
n
t
s
[
i
]
[
j
]
points[i][j]
points[i][j]所能获得的最高分值,则
d
p
[
i
]
[
j
]
=
m
a
x
{
d
p
[
i
−
1
]
[
j
′
]
−
a
b
s
(
j
−
j
′
)
+
p
o
i
n
t
s
[
i
]
[
j
]
}
dp[i][j]=max\left\{ dp[i-1][j^{'}]-abs(j-j^{'})+points[i][j]\right\}
dp[i][j]=max{dp[i−1][j′]−abs(j−j′)+points[i][j]}
即枚举在第
i
−
1
i-1
i−1行选择的格子
j
′
j^{'}
j′,注意
i
=
0
i=0
i=0时上面公式不适用,要特殊处理。
但是这种思路会超时,需要进行优化,参考官方题解,思路比较巧妙。
代码
class Solution {
public long maxPoints(int[][] points) {
int m=points.length;
int n=points[0].length;
long[][] dp=new long[m][n];
for(int i=0;i<m;i++){
if(i==0){
for(int j=0;j<n;j++){
dp[i][j]=points[i][j];
}
}
else{
long max=dp[i-1][0]+0;
for(int j=0;j<n;j++){
max=Math.max(max,dp[i-1][j]+j);
dp[i][j]=max+points[i][j]-j;
}
max=dp[i-1][n-1]-(n-1);
for(int j=n-1;j>=0;j--){
max=Math.max(max,dp[i-1][j]-j);
dp[i][j]=Math.max(dp[i][j],max+points[i][j]+j);
}
}
}
long res=dp[m-1][0];
for(int j=0;j<n;j++){
if(dp[m-1][j]>res){
res=dp[m-1][j];
}
}
return res;
}
}
4、1938. Maximum Genetic Difference Query
难度:Hard
题目大意:
详见题目。
思路
暂时不会
代码
//