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.
Example 1:
Input: nums = [1,2,3,4], k = 5
Output: 2
Explanation: Starting with nums = [1,2,3,4]:
Input: nums = [3,1,3,4,3], k = 6
Output: 1
Explanation: Starting with nums = [3,1,3,4,3]:
투포인터를 쓰면서 하는 거다. 알아두어야할 것은 처음에 sort()를 해줘야지 투포인터가 효율적으로 작동한다는 것이다. 하지않으면 edge case에서 걸린다 (예: [4,4,1,3,1,3,2,2,5,5,1,5,2,1,2,3,5,4]).
풀 수 있었던 거였는데 operation 숫자 늘리는 게 갑자기 생각 안 나서 멍 때리다가 답지보고 알아냄 🤦
class Solution:
def maxOperations(self, nums: List[int], k: int) -> int:
nums.sort()
left, right = 0, len(nums) - 1
operation = 0
while left < right:
if nums[left] + nums[right] == k:
operation += 1
left += 1
right -= 1
elif nums[left] + nums[right] < k:
left += 1
else:
right -= 1
return operation