const int N=110; //定义全局变量
int s1[N][N],s2[N][N];//定义全局数组
class Solution {
public:
vector<int> getBiggestThree(vector<vector<int>>& g) {
int n=g.size(),m=g[0].size();
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
s1[i][j]=s1[i-1][j-1]+g[i-1][j-1];
s2[i][j]=s2[i-1][j+1]+g[i-1][j-1];
}
set<int>S;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
S.insert(g[i-1][j-1]);
for(int k=1;i-k>=1&&i+k<=n&&j-k>=1&&j+k<=m;k++)
{
int a = s2[i][j-k] - s2[i-k][j];
int b=s1[i][j+k]-s1[i-k][j];
int c=s2[i+k][j]-s2[i][j+k];
int d=s1[i+k][j]-s1[i][j-k];
S.insert(a+b+c+d-g[i+k-1][j-1]+g[i-k-1][j-1]);
}
while(S.size()>3) S.erase(S.begin());
}
return vector<int>{S.rbegin(),S.rend()};//set表的反迭代与vector函数的结合
}
};
vector函数
最新推荐文章于 2022-09-05 16:50:57 发布