You are given an integer array nums and an integer k.
In one operation, you can pick two numbers from the array
whose sum equals k and remove them from the array.
Return the maximum number of operations you can perform on the array.
정수배열 nums와 정수 k가 주어집니다.
한번의 연산을 통해 nums에서 합쳤을때 k가 되는 두 원소를 제거할수 있습니다.
nums에서 위 연산을 수행할수 있는 최대 횟수를 리턴하시오.
Input: nums = [1,2,3,4], k = 5
Output: 2
Explanation: [1, 2, 3, 4] 에서 시작한다.
1 + 4 = 5 이기에 연산에 의해 삭제되고 [2, 3]이 남는다.
2 + 3 = 5 이기에 연산에 의해 삭제되고 [] 가 남는다.
더 이상 배열이 비어 연산이 불가능하기에 지금까지 수행한 연산의 횟수인 2가 리턴된다.
nums.sort()
class Solution:
def maxOperations(self, nums: List[int], k: int) -> int:
ops, left, right = 0, 0, len(nums) - 1
nums.sort()
while left < right:
if nums[left] + nums[right] > k:
right -= 1
elif nums[left] + nums[right] < k:
left += 1
else:
ops += 1
left += 1
right -= 1
return ops
class Solution:
def maxOperations(self, nums: List[int], k: int) -> int:
cnt = Counter(nums)
ans = 0
for i, _ in cnt.items():
if k - i in cnt:
ans += min(cnt[i], cnt[k-i])
return ans // 2