Judie 发表于 2023-6-5 11:25:04

【朱迪的LeetCode刷题笔记】】1679. Max Number of K-Sum Pairs #Easy #Python

本帖最后由 Judie 于 2023-6-4 22:36 编辑

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 = , k = 5
Output: 2
Explanation: Starting with nums = :
- Remove numbers 1 and 4, then nums =
- 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 = , k = 6
Output: 1
Explanation: Starting with nums = :
- Remove the first two 3's, then nums =
There are no more pairs that sum up to 6, hence a total of 1 operation.

Constraints:
1 <= nums.length <= 105
1 <= nums <= 109
1 <= k <= 109

Judy
Python hash table
class Solution(object):
    def maxOperations(self, nums, k):
      """
      :type nums: List
      :type k: int
      :rtype: int
      """
      d = {}
      c = 0
      for i, x in enumerate(nums):
            if x in d and d > 0:
                c += 1
                d -= 1
            elif k-x in d:
                d += 1
            else:
                d = 1
      return c


Sol1
Python slower? but oneliner! lol
https://leetcode.com/problems/max-number-of-k-sum-pairs/solutions/1022699/python-short-counter-solution-oneliner-explained/?envType=study-plan-v2&envId=leetcode-75
class Solution:
    def maxOperations(self, nums, k):
      cnt, ans = Counter(nums), 0
      for val in cnt:
            ans += min(cnt, cnt)
      return ans//2
return (lambda c: sum(min(c, c) for n in c))(Counter(nums))//2

页: [1]
查看完整版本: 【朱迪的LeetCode刷题笔记】】1679. Max Number of K-Sum Pairs #Easy #Python