日野弥生:勉強しよう
LeetCode 1679 - K 和数对的最大数目
发表于2025年04月19日
本题使用哈希表(字典)对数据进行存储,牺牲O(n)空间换取时间复杂度为O(n)的效率。
class Solution:
def maxOperations(self, nums: List[int], k: int) -> int:
result = 0
# 利用Counter能直接记录列表数据和出现的次数
numDict = dict(Counter(nums))
for item in nums:
value = k - item
if value in numDict and item in numDict:
if numDict[item] > 0 and numDict[value] > 0:
# 如果 item 和 value 相同,确保有至少两个相同的元素
if item == value and numDict[item] > 1:
numDict[item] -= 2 # 减少两个相同元素的计数
result += 1
# 如果 item 和 value 不同
elif item != value:
numDict[item] -= 1 # 减少 item 的计数
numDict[value] -= 1 # 减少 value 的计数
result += 1
return result