1679. Max number of K-sum pairs

Numeric_combo·2024년 11월 26일

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]:

  • Remove numbers 1 and 4, then nums = [2,3]
  • Remove numbers 2 and 3, then nums = []
    There are no more pairs that sum up to 5, hence a total of 2 operations.
    Example 2:

Input: nums = [3,1,3,4,3], k = 6
Output: 1
Explanation: Starting with nums = [3,1,3,4,3]:

  • Remove the first two 3's, then nums = [1,4,3]
    There are no more pairs that sum up to 6, hence a total of 1 operation.

투포인터를 쓰면서 하는 거다. 알아두어야할 것은 처음에 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

profile
덕질기록용

0개의 댓글