def largestSubmatrixWithSumZero(mat, r, c): def find(arr): d={0:-1} t,ans=0,0 for i in range(c): t+=arr[i] if t in d:ans=max(ans,i-d[t]) else:d[t]=i return ans ans=float('-inf') for i in range(r): arr=[0]*c for j in range(i,r): for col in range(c): arr[col]+=mat[j][col] h=j-i+1 w=find(arr) ans=max(ans,h*w) return ans class Solution: def maximumSumRectangle(self,n,m,M): def kadane(arr): cursum,maxsum=0,float('-inf') for i in range(m): cursum+=arr[i] maxsum=max(maxsum,cursum) if cursum<0:cursum=0 return maxsum maxsum=float('-inf') for i in range(n): arr=[0]*m for j in range(i,n): for k in range(m): arr[k]+=M[j][k] t=kadane(arr) #print(t) maxsum=max(maxsum,t) return maxsum