nums라는 숫자 목록이 있다고 가정하고 인접하지 않은 숫자의 가장 큰 합계를 반환하는 함수를 정의합니다. 여기서 숫자는 0 또는 음수일 수 있습니다.
따라서 입력이 [3, 5, 7, 3, 6]과 같으면 3, 7, 6을 사용하여 get16을 얻을 수 있으므로 출력은 16이 됩니다.
이 문제를 해결하기 위해 다음 단계를 따르겠습니다-
-
숫자의 크기가 <=2이면
-
최대 숫자 반환
-
-
노테이크 :=0
-
가져 가라 :=nums[0]
-
범위 1에서 숫자 크기까지의 i에 대해
-
take :=noTake + nums[i]
-
noTake :=noTake 및 take의 최대값
-
-
noTake 및 take의 최대값을 반환합니다.
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
class Solution: def solve(self, nums): if len(nums) <= 2: return max(nums) noTake = 0 take = nums[0] for i in range(1, len(nums)): take, noTake = noTake + nums[i], max(noTake, take) return max(noTake, take) ob = Solution() nums = [3, 5, 7, 3, 6] print(ob.solve(nums))
입력
[3, 5, 7, 3, 6]
출력
16