100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Leecode 第 289 场周赛 6072. 转角路径的乘积中最多能有几个尾随零 前缀和

Leecode 第 289 场周赛 6072. 转角路径的乘积中最多能有几个尾随零 前缀和

时间:2022-04-20 01:57:03

相关推荐

Leecode 第 289 场周赛 6072. 转角路径的乘积中最多能有几个尾随零 前缀和

原题链接:6072. 转角路径的乘积中最多能有几个尾随零

参考的周赛大佬代码,我只能说“妙啊,秒啊”要变成妙蛙种子了,大佬们的代码就是写的漂亮简洁,要多看别人的代码学习:

class Solution {public:int maxTrailingZeros(vector<vector<int>>& grid) {int n=grid.size();int m=grid[0].size();int res=0;vector<vector<pair<int,int> > > B(n,vector<pair<int,int> >(m));vector<vector<pair<int,int> > > L,R,U,D;for(int i=0;i<n;i++){for(int j=0;j<m;j++){while(grid[i][j]%2==0){B[i][j].first++;grid[i][j]/=2;}while(grid[i][j]%5==0){B[i][j].second++;grid[i][j]/=5;}}}L=R=U=D=B;for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(i>0)U[i][j]=make_pair(U[i-1][j].first+U[i][j].first,U[i-1][j].second+U[i][j].second);if(j>0)L[i][j]=make_pair(L[i][j-1].first+L[i][j].first,L[i][j-1].second+L[i][j].second);}}for(int i=n-1;i>=0;i--){for(int j=m-1;j>=0;j--){if(i+1<n)D[i][j]=make_pair(D[i][j].first+D[i+1][j].first,D[i][j].second+D[i+1][j].second);if(j+1<m)R[i][j]=make_pair(R[i][j].first+R[i][j+1].first,R[i][j].second+R[i][j+1].second);}}for(int i=0;i<n;i++){for(int j=0;j<m;j++){res=max(res,min(L[i][j].first+U[i][j].first-B[i][j].first,L[i][j].second+U[i][j].second-B[i][j].second));res=max(res,min(L[i][j].first+D[i][j].first-B[i][j].first,L[i][j].second+D[i][j].second-B[i][j].second));res=max(res,min(R[i][j].first+U[i][j].first-B[i][j].first,R[i][j].second+U[i][j].second-B[i][j].second));res=max(res,min(R[i][j].first+D[i][j].first-B[i][j].first,R[i][j].second+D[i][j].second-B[i][j].second));}}return res;}};

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。