Sol in c++ in O(1) space complexity


#1

int cal(vector &arr){
sort(arr.begin(),arr.end());
int i,n=arr.size();
int res=0,prev=0;
for(i=0;i<n;i++){
if(arr[i]!=prev){
res=max(res,arr[i]*(n-i));
prev=arr[i];
}
}
return res;
}
int Solution::solve(vector<vector > &a) {
int n=a.size(),m=a[0].size(),i,j;
for(i=0;i<m;i++){
for(j=1;j<n;j++){
if(a[j][i]!=0){
a[j][i]=a[j-1][i]+1;
}
}
}
int res=INT_MIN;
for(i=0;i<n;i++){
int area=0;
//for(j=0;j<n;j++){
//cout<<a[i][j]<<" ";
area=cal(a[i]);
//}
res=max(res,area);
//cout<<endl;
}
return res;
}