num이라는 요소 목록이 있고 또 다른 값 k가 있다고 가정합니다. 이제 nums에서 요소를 선택하고 부정하는 연산을 고려해 보겠습니다. 정확히 k개의 연산을 수행할 수 있습니다. 생성할 수 있는 최대 결과 합계를 찾아야 합니다.
따라서 입력이 nums =[2, 1, -6, -2] k =3과 같으면 출력은 9가 됩니다. -6과 -2를 부정하고 1은 [2, -1, 6 , 2]이고 합은 9입니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
n :=숫자 크기
-
n이 0과 같으면
-
0 반환
-
-
목록 번호 정렬
-
0 ~ n - 1 범위의 idx에 대해
-
nums[idx] <0이고 k> 0이면
-
k :=k - 1
-
숫자[idx] :=-nums[idx]
-
-
-
k가 홀수이면
-
반환(숫자에 있는 모든 요소의 합) - (2 * 숫자의 최소값)
-
-
nums에 있는 모든 요소의 합계를 반환합니다.
예시
더 나은 이해를 위해 다음 구현을 살펴보겠습니다.
def solve(nums, k): n = len(nums) if n == 0: return 0 nums.sort() for idx in range(n): if nums[idx] < 0 and k > 0: k -= 1 nums[idx] *= -1 if k & 1 == 1: return sum(nums) - 2 * min(nums) return sum(nums) nums = [2, 1, -6, -2] k = 3 print(solve(nums, k))
입력
[2, 1, -6, -2], 3
출력
9