第一题
class Solution {
public int countPrefixes(String[] words, String s) {
int res = 0;
for(String w : words){
if(s.startsWith(w)){
res++;
}
}
return res;
}
}
第二题
前缀和
class Solution {
public:
int minimumAverageDifference(vector<int>& nums) {
int n = nums.size();
vector<long long> f(n+1);
for(int i=1; i<=n; i++) {
f[i] = f[i-1]+nums[i-1];
}
int res = INT_MAX, index = 1;
for(int i=1; i<=n; i++){
int u = abs((f[i]/i)- (i == n ? 0 : (f[n]-f[i])/(n-i)));
if(u < res){
index = i;
res = u;
}
}
return index-1;
}
};
第三题
模拟
class Solution {
public:
int dx[4] = {-1,0, 1, 0};
int dy[4] = {0, 1, 0, -1};
int countUnguarded(int m, int n, vector<vector<int>>& guards, vector<vector<int>>& walls) {
vector<vector<int>> g(m, vector<int>(n));
for(auto& w : walls){
g[w[0]][w[1]] = 2;
}
for(auto& c : guards){
g[c[0]][c[1]] = 1;
}
for (auto& c : guards) {
int x = c[0], y = c[1];
for(int i=0; i<4; i++){
int nx = x+dx[i];
int ny = y+dy[i];
while(nx >=0 && nx < m && ny >=0 && ny < n && g[nx][ny] != 2 && g[nx][ny] != 1){
g[nx][ny] = 3;
nx += dx[i];
ny += dy[i];
}
}
}
int res =0;
for(int i=0; i<m; i++){
for(int j=0; j<n; j++){
if(g[i][j] == 0) res++;
}
}
return res;
}
};