My code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution:
    def maxOperations(self, nums: List[int], k: int) -> int:
        left = 0
        right = len(nums) - 1
        operation = 0
        nums.sort()
        while left < right:
            if nums[left] + nums[right] == k and left < right:
                operation += 1
                left += 1
                right -= 1
            elif nums[left] + nums[right] > k:
                right -= 1
            else:
                left += 1
            
        return operation
1
2
Runtime : 556ms (beats 81.92%)   
Memory : 28.48MB (beats 97.28&)

Other code

Hashmap

1
2
3
4
5
6
7
8
9
10
11
12
class Solution:
    def maxOperations(self, nums: List[int], k: int) -> int:
        op_set = defaultdict(int)
        operation = 0
        for n in nums:
            if op_set[n]:
                op_set[n] -= 1
                operation += 1
            else:
                op_set[k - n] += 1
            
        return operation
1
2
Runtime : 553ms (beats 85.11%)     
Memory : 29.70MB (beats 9.51%)