第 66 场双周赛
5922. 统计出现过一次的公共字符串
哈希
unordered_mapm1,m2;
int countWords(vector& words1, vector& words2) {
for(int i=0;i
5923. 从房屋收集雨水需要的最少水桶数
先放两边有屋子的,再放只有一边有屋子的,判断还有没有无法接到雨水的房子。
int minimumBuckets(string s) {
int n=s.size();
int res=0;
for(int i=1;i=0&&s[i-1]=='.')
{
res++;
s[i]=s[i-1]='X';
}
}
}
for(int i=0;i
网格图中机器人回家的最小代价
从起点到终点的代价按哈密顿距离走是固定的
int minCost(vector& startPos, vector& homePos, vector& rowCosts, vector& colCosts) {
int res=0;
if(startPos[0]homePos[0])
{
for(int i=startPos[0]-1;i>=homePos[0];i--)res+=rowCosts[i];
}
if(startPos[1]homePos[1]) for(int i=startPos[1]-1;i>=homePos[1];i--)res+=colCosts[i];
return res;
}
5925. 统计农场中肥沃金字塔的数目
前缀和
int work(int x,int y,vector>& c)
{
int n=c.size()-1,m=c[0].size()-1;
int sum=0,d=1;
for(int i=x;im)break;
if(c[i][y+d]-c[i][y-d-1]==2*d+1)
{
sum++;
d++;
}
else break;
}
return sum;
}
int countPyramids(vector>& g) {
int n=g.size(),m=g[0].size();
vectorw(m+1,0);
vector>s(n+1,w);
vector>G(n,w);
for(int i=0;i=0;i--)
{
for(int j=m-1;j>=0;j--)
{
G[x][y++]=g[i][j];
if(y==m)
{
x++,y=0;
}
}
}
for(int i=0;i