class Solution:
def maximumNumberOfOnes(self, width: int, height: int, sideLength: int, maxOnes: int) -> int:
count = []
for r in range(sideLength):
for c in range(sideLength):
num = (1 + (width - c - 1) // sideLength) * (1 + (height - r - 1) // sideLength)
count.append(num)
count.sort(reverse=True)
return sum(count[:maxOnes])Time complexity:
Space complexity:
class Solution:
def maximumNumberOfOnes(self, width: int, height: int, sideLength: int, maxOnes: int) -> int:
answer = maxOnes * ((height // sideLength) * (width // sideLength))
remain = maxOnes
cnt1 = min((height % sideLength) * (width % sideLength), remain)
answer += ((height // sideLength) + (width // sideLength) + 1) * cnt1
remain -= cnt1
if height // sideLength > width // sideLength:
cnt2 = min(((width % sideLength) * sideLength) - ((height % sideLength) * (width % sideLength)), remain)
answer += (height // sideLength) * cnt2
remain -= cnt2
cnt3 = min(((height % sideLength) * sideLength) - ((height % sideLength) * (width % sideLength)), remain)
answer += (width // sideLength) * cnt3
remain -= cnt3
else:
cnt2 = min(((height % sideLength) * sideLength) - ((height % sideLength) * (width % sideLength)), remain)
answer += (width // sideLength) * cnt2
remain -= cnt2
cnt3 = min(((width % sideLength) * sideLength) - ((height % sideLength) * (width % sideLength)), remain)
answer += (height // sideLength) * cnt3
remain -= cnt3
return answerTime complexity:
Space complexity: