양의 짝수 정수의 최대 분할
finalSum
가 주어집니다. 그것을 고유한 양의 짝수 정수의 최대 수의 합으로 나눕니다.finalSum = 12
가 주어졌을 때 finalSum
, (12)
, (2 + 10)
및 (2 + 4 + 6)
와 같은 분할이 유효합니다((4 + 8)
까지 합산되는 고유한 양의 짝수). 그 중 (2 + 4 + 6)
는 정수의 최대 개수를 포함합니다. 모든 숫자가 고유해야 하므로 finalSum
를 (2 + 2 + 4 + 4)
로 분할할 수 없습니다. 최대 정수 수를 포함하는 유효한 분할을 나타내는 정수 목록을 반환합니다.
finalSum
에 대한 유효한 분할이 없으면 빈 목록을 반환합니다. 어떤 순서로든 정수를 반환할 수 있습니다.예 1:
입력: finalSum = 12
출력: [2,4,6]
설명: 유효한 분할은
(12)
, (2 + 10)
, (2 + 4 + 6)
및 (4 + 8)
입니다.(2 + 4 + 6)의 최대 정수 수는 3입니다. 따라서 [2,4,6]을 반환합니다.
[2,6,4], [6,2,4] 등도 허용됩니다.
예 2:
입력: finalSum = 7
출력: []
설명: 제공된 finalSum에 유효한 분할이 없습니다.
따라서 빈 배열을 반환합니다.
예 3:
입력: finalSum = 28
출력: [6,8,2,12]
설명: 유효한 분할은
(2 + 26)
, (6 + 8 + 2 + 12)
및 (4 + 24)
입니다.(6 + 8 + 2 + 12)
의 최대 정수 수는 4입니다. 따라서 [6,8,2,12]를 반환합니다.[10,2,4,12], [6,2,4,16] 등도 허용됩니다.
제약:
1 <= finalSum <= 1010
해결책:
class Solution:
def maximumEvenSplit(self, finalSum: int) -> List[int]:
res = []
if finalSum & 1:
return res
i = 1
while i * (i + 1) <= finalSum:
res.append(2 * i)
i += 1
if i * (i + 1) > finalSum:
res.pop()
res.append(finalSum - (i - 1) * (i - 2))
return res
Reference
이 문제에 관하여(양의 짝수 정수의 최대 분할), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/theabbie/maximum-split-of-positive-even-integers-4ide텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)