【朱迪的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]